Προγραμματισμός

Να είστε περίεργοι και να μάθετε: Το σύγχρονο Fortran με λίγα λόγια

Οι εξελίξεις στην επιστήμη και τη μηχανική εξακολουθούν να βασίζονται στο Fortran περισσότερο από οποιαδήποτε άλλη γλώσσα με πολλά σημαντικά μέτρα. Εκπληκτος? Δεν πρέπει να είστε, αν και πολλοί άνθρωποι που αυτοαποκαλούνται προγραμματιστές δεν έχουν μάθει ποτέ το Fortran. Θα σας διδάξω το Fortran σε πέντε λεπτά ή λιγότερο. Δεν θα βλάψει και θα ξέρετε ποια είναι ίσως η πιο σημαντική και επιδραστική γλώσσα προγραμματισμού ποτέ.

Οι επιστήμονες υπολογιστών μπορεί να συμπεριφέρονται σαν να μην υπάρχει το Fortran, αλλά η δημοφιλής κουλτούρα (Οι Σίμπσονς, Σεζόν 26, Επεισόδιο 10) τα πήγε καλύτερα με τη σοφή παρατήρηση: «Το Fortran, η μεγαλύτερη από τις γλώσσες προγραμματισμού!» Στην πραγματικότητα, περισσότεροι από τους μισούς υπολογισμούς που γίνονται από τους πιο ισχυρούς υπολογιστές στον κόσμο προέρχονται από το Fortran. Σε ορισμένα μεγάλα συστήματα, ο κωδικός Fortran μπορεί να είναι υπεύθυνος για το 80-100% του υπολογισμού.

Είναι επίσης απίστευτα εύκολο να το μάθετε, όπως θα δείτε με αυτήν τη σύντομη εισαγωγή στον προγραμματισμό Fortran. Υποθέτω ότι γνωρίζετε ήδη πώς να προγραμματίζετε σε κάτι διαφορετικό από το Fortran (εάν είστε εντελώς νέοι στον προγραμματισμό, συνιστώ ανεπιφύλακτα να μάθετε το Fortran με το "A Fortran Coloring Book").

 Ας αρχίσουμε

 πρόγραμμα γεια

εκτύπωση *, "Γεια, Κόσμος!"

τέλος προγράμματος γεια

Πληκτρολογήστε (χρησιμοποιήστε επέκταση .f95 ή .f90 για το αρχείο σας), μεταγλώττιση, εκτέλεση αυτού και εκτυπώνει "Γεια, Κόσμος!". Το "*" στην ένδειξη εκτύπωσης ουσιαστικά σημαίνει μορφή αυτόματα.

Το δεύτερο παράδειγμα μου κάνει κάποια μαθηματικά και τελειώνει με δηλώσεις «if / then / else»:

πρόγραμμα mymath

κανένα σιωπηρό

πραγματική :: απάντηση, x, y, άθροισμα, prod, cubedx, cubedy

εκτύπωση *, «Πληκτρολογήστε δύο αριθμούς (x και y)»

διαβάστε *, x

έτοιμος

άθροισμα = x + y

prod = x * ε

cubedx = x ** 3;

cubedy = y ** 3;

εκτύπωση *, «Το άθροισμα x + y είναι», άθροισμα

εκτύπωση *, «Το προϊόν x * y είναι», prod

εκτύπωση *, «Cubed x and y», cubedx, cubedy

εκτύπωση *, «ημίτονο του x και y», sin (x), sin (y)

εάν (x> y) τότε

print *, "Παρατήρησα ότι το x είναι μεγαλύτερο από το y"

αλλού

εκτύπωση *, "Φαίνεται ότι το y δεν είναι μικρότερο από το x"

τέλος εαν

τέλος προγράμματος mymath

Μπορεί να παρατηρήσετε ότι μπήκα στο «σιωπηρό κανένα». Αυτό είναι φυσιολογικό στο σύγχρονο Fortran - λέει στον μεταγλωττιστή να απαιτεί να δηλώνονται ρητά οι μεταβλητές έτσι ώστε άγνωστες μεταβλητές να επισημαίνονται ως σφάλματα. Χωρίς αυτό, το Fortran υποθέτει ότι οι μεταβλητές που ξεκινούν με «i» έως «n» (τα δύο πρώτα γράμματα του ακέραιου) είναι ακέραιοι και άλλοι είναι αριθμοί κυμαινόμενου σημείου («πραγματικός»). Αυτό μείωσε τον αριθμό των χαρτιών που έπρεπε να χτυπήσουμε πριν από δεκαετίες, αλλά γενικά παραβλέπουμε αυτές τις σύγχρονες εποχές.

Η εκτέλεση αυτού του προγράμματος (και πληκτρολόγηση σε 3.14 και 1.57) αποφέρει τα εξής:

Πληκτρολογήστε δύο αριθμούς (x και y)

3.14

1.57

Το άθροισμα x + y είναι 4.71000004

Το προϊόν x * y είναι 4,92980051

Cubed x and y 30.9591484 3.86989355

ημιτονοειδές των x και y 1.59254798E-03 0.999999702

Παρατήρησα ότι το x είναι μεγαλύτερο από το y

Το Fortran έχει σχεδιαστεί για μαθηματικά (FORMula TRANslation), σημειώστε ότι το «sin (…)» είναι ενσωματωμένο χωρίς να χρειάζεται να περιλαμβάνει κεφαλίδα ή πακέτο. Φυσικά, το Fortran υποστηρίζει αριθμούς κυμαινόμενου και ακέραιου αριθμού, αλλά επίσης υποστηρίζει πολύπλοκους αριθμούς. Δεν χρειάζονται πρόσθετα.

Το τρίτο παράδειγμα μου περιλαμβάνει βρόχους (που ονομάζεται "do" στο Fortran):

βρόχος προγράμματος

κανένα σιωπηρό

ακέραιος :: i, j, keep (100,2), w

w = 0

do i = 10, 50, 5

do j = i, 20, 5

εκτύπωση *, i, j

w = w + 1

keep (w, 1) = i

keep (w, 2) = j

τελειώστε

τελειώστε

κάνω i = 1, w

εκτύπωση *, 'keep:', keep (i, 1), keep (i, 2)

τελειώστε

τέλος προγράμματος βρόχο

Η γραμμή εκτύπωσης στο πρόγραμμά μου προγράμματος εκτελείται μόνο εάν εκτελείται το j do-loop. Ο βρόχος j δεν λειτουργεί καθόλου όταν ξεπερνά το 20. Αυτό το παράδειγμα εισάγει επίσης συστοιχίες με τη χρήση ενός πίνακα που ονομάζεται «keep.» Το Fortran ξεκινά την αρίθμηση του πίνακα στο «1» αντί του μηδέν, που είναι ο ίδιος τρόπος με τον οποίο οι Αμερικανοί αριθμούν ορόφους (όροφος # 2 αναφέρεται στο ισόγειο που θεωρείται «1»). Άλλα μέρη στον κόσμο χρησιμοποιούν αρίθμηση με βάση το μηδέν για τα κτίριά τους (ο «πρώτος όροφος» είναι αυτό που οι Αμερικανοί αποκαλούν «δεύτερο όροφο») όπως το C και το C ++ για συστοιχίες. Η έξοδος από αυτό το παράδειγμα «βρόχου προγράμματος» εμφανίζεται παρακάτω:

           10          10

          10          15

          10          20

          15          15

          15          20

          20          20

κρατήστε: 10 10

κρατήστε: 10 15

κρατήστε: 10 20

κρατήστε: 15 15

κρατήστε: 15 20

κρατήστε: 20 20

Στο τελικό μου παράδειγμα, θα ορίσω μια υπορουτίνα (συνάρτηση) που ονομάζεται «ave» για να λάβω τον μέσο όρο τριών αριθμών που ορίζω στατικά. Θα παρατηρήσετε ότι είμαι τεμπέλης και μόλις έγραψα «τέλος» μετά το πρόγραμμα και τη λειτουργία. Αυτό είναι εντάξει, αλλά αν χρησιμοποιείτε ονόματα, όπως έκανα προηγουμένως, ο μεταγλωττιστής θα σας βοηθήσει να ελέγξετε ότι το τέλος ταιριάζει με αυτό που θέλετε.

Πρόγραμμα κλήσης

κανένα σιωπηρό

πραγματικό a, b, c

πραγματικό av, avsq1, avsq2

πραγματική λεωφόρος

δεδομένα a, b, c / 5.0,2.0,3.0 /

av = ave (a, b, c)

εκτύπωση *, "Ο μέσος όρος", a, b, c, "είναι:", AV

τέλος

πραγματική συνάρτηση ave (x, y, z)

πραγματικό x, y, z, άθροισμα

άθροισμα = x + y + z

ave = άθροισμα / 3.0

ΕΠΙΣΤΡΟΦΗ

τέλος

Εκτυπώνει:

Ο μέσος όρος των 5.00000000 2.00000000 3.00000000 είναι: 3.33333325

Ναι, το Fortran μπορεί να μορφοποιήσει την έξοδο. Αν αντικαταστήσουμε την "εκτύπωση" παραπάνω ως εξής:

εκτύπωση 8, "Ο μέσος όρος", a, b, c, "είναι", AV

8 μορφή (a, 2 (f4.2, ','), f4.2, a, f7.5)

Η έξοδος θα γίνει:

Ο μέσος όρος των 5,00, 2,00, 3,00 είναι 3,33333

Η μορφοποίηση Fortran μπορεί επίσης να γίνει σε μία μόνο γραμμή και να έχει την ίδια όμορφη έξοδο:

εκτύπωση "(a, 2 (f4.2, ','), f4.2, a, f7.5)", 'Ο μέσος όρος', a, b, c, 'είναι', AV

Εάν σας οδήγησαν να πιστέψετε ότι το Fortran είναι παράξενο, θα παραπλανηθήκατε. Έγραψα όλα αυτά τα παραδείγματα σε αυτό που οι προγραμματιστές του Fortran αποκαλούν «ελεύθερη μορφή». Αυτό έγινε επίσημα μέρος του Fortran με το πρότυπο «Fortran 90» (εξ ου και οι οδηγίες μου να χρησιμοποιήσω το .f90 ή το .f95 ως επεκτάσεις αρχείων. Αυτά λένε στον μεταγλωττιστή, χωρίς ειδικό διακόπτες επιλογών, που χρησιμοποιούμε δωρεάν φόρμα). Λάβετε υπόψη, το 1956 οι χρήστες ήθελαν κάτι προσαρμοσμένο στις γροθιές των καρτών. Θα μπορούσα να συνεχίσω για ώρες σχετικά με τον τρόπο με τον οποίο το Fortran ταιριάζει με μορφές προσανατολισμένες στη στήλη και χαρακτήρες συνέχισης κ.λπ. Αλλά, όπως έχω δείξει, δεν χρειάζεται πραγματικά να το μάθετε για να γράψετε ή να διαβάσετε τον κωδικό Fortran.

Γιατί λοιπόν το Fortran αποφεύγεται από επιστήμονες υπολογιστών; Μεγάλη ερώτηση. Το Fortran είναι η παλαιότερη γλώσσα (περίπου 1956). Ξεκίνησε σε μια εποχή ταινιών, καρτών διάτρησης και αντικατάστασης ανθρώπινων υπολογιστών. Προηγείται δομημένος προγραμματισμός μπλοκ, θεωρία ανάλυσης και γραφικά. Στην πορεία, οι επιστήμονες των υπολογιστών διερεύνησαν τις εξελίξεις στον τομέα της πληροφορικής, ενώ εισήγαγαν χιλιάδες γλώσσες προγραμματισμού, οι περισσότερες από τις οποίες δεν κατάλαβαν. Παρ 'όλα αυτά, σε κάθε τομέα της ανθρώπινης προσπάθειας, το «έξω με το παλιό, με το νέο» είναι μοντέρνο. Η επιστήμη των υπολογιστών δεν είναι διαφορετική.

Όμως, όταν ο αριθμός είναι σημαντικός, τίποτα δεν είναι καλύτερο ή ευκολότερο από το Fortran. Προτείνω όλοι να γνωρίζουμε πολλά εργαλεία και να χρησιμοποιούμε το καλύτερο εργαλείο για τη δουλειά. Ακριβώς επειδή το αξιόπιστο σφυρί μου βρισκόταν στην εργαλειοθήκη μου εδώ και πολύ καιρό δεν σημαίνει ότι δεν το χρειάζομαι για τη σωστή δουλειά. Το Fortran δεν είναι διαφορετικό.

Το Fortran δεν είναι μόνο η πρωτότυπη γλώσσα προγραμματισμού υψηλού επιπέδου, είναι ζωντανό, σημαντικό και χρησιμοποιείται ευρέως. Ποιος ξεκίνησε τις φήμες να προτείνει κάτι διαφορετικό;

 Πόροι

  • Intel Fortran - χρησιμοποιείται πολύ για x86 (Intel / AMD), υψηλής απόδοσης
    • Μπορεί να δικαιούστε δωρεάν μεταγλωττιστή (και άλλα εργαλεία)
    • Δοκιμαστικά αντίγραφα διαθέσιμα με δυνατότητα αγοράς αργότερα
    • Η έκδοση beta του 2018 διαρκεί έως τον Ιούλιο του 2018: δοκιμάστε αυτήν την τελευταία και μεγαλύτερη πλήρως λειτουργική beta, συμπεριλαμβανομένου του Fortran και των σχετικών εργαλείων, μέχρι τότε δωρεάν: Intel Parallel Studio XE 2018 Beta - Εγγραφείτε τώρα
  • GNU Fortran - ευρύτερη υποστήριξη (πολλοί επεξεργαστές, πολλά συστήματα), χαμηλότερη απόδοση
    • ανοιχτού κώδικα και δωρεάν
    • στο MacBook Air μου ... Έπρεπε να πω μόνο "brew install gcc" και έχω δωρεάν το gfortran

Κάντε κλικ εδώ για να κατεβάσετε τη δωρεάν δοκιμή 30 ημερών του Intel Parallel Studio XE