Programmēšana

Esi ziņkārīgs un mācies: mūsdienu Fortran īsumā

Zinātnes un inženierzinātņu attīstība, izmantojot daudzus svarīgus pasākumus, joprojām balstās uz Fortran nekā uz jebkuru citu valodu. Pārsteigts? Jums nevajadzētu būt, lai gan daudzi cilvēki, kuri sevi dēvē par programmētājiem, nekad nav iemācījušies Fortran. Es iemācīšu jums Fortran pēc piecām minūtēm vai mazāk. Tas nekaitēs, un jūs zināt, kas, iespējams, ir visu laiku vissvarīgākā un ietekmīgākā programmēšanas valoda.

Datorzinātnieki var izturēties tā, it kā Fortrana neeksistē, taču populārā kultūraSimpsoni, 26. sezona, 10. sērija) veicās labāk ar gudro novērojumu: “Fortran, lielākā no programmēšanas valodām!” Patiesībā vairāk nekā puse pasaules jaudīgāko datoru veikto aprēķinu nāk no Fortran. Dažās lielās sistēmās Fortran kods var būt atbildīgs par 80–100% aprēķina.

To ir arī neticami viegli iemācīties, kā redzēsit ar šo īso ievadu par Fortran programmēšanu. Es pieņemu, ka jūs jau zināt, kā programmēt kaut ko citu, nevis Fortran (ja programmēšana jums ir pilnīgi jauna, es ļoti iesaku mācīties Fortran ar “A Fortran krāsojamo grāmatu”).

 Sāksim

 programma sveiki

drukāt *, "Sveika, pasaule!"

beigu programma sveiki

Ierakstiet (failam izmantojiet paplašinājumu .f95 vai .f90), apkopojiet, palaidiet to, un tas izdrukā “Hello, World!”. “*” Drukātajā paziņojumā būtībā nozīmē formatēt automātiski.

Mans otrais piemērs veic matemātiku un pabeidz teikumus “ja / tad / vēl”:

programmas simbols

netiešs neviens

real :: atbilde, x, y, summa, prod, cubedx, cubedy

print *, 'Ievadiet divus ciparus (x un y)'

lasīt *, x

lasīt *, y

summa = x + y

prod = x * y

kubekss = x ** 3;

cubedy = y ** 3;

print *, 'Summa x + y ir', summa

print *, 'Produkts x * y ir', prod

drukāt *, 'Cubed x un y', cubedx, cubedy

drukāt *, 'x un y sinusa', grēks (x), grēks (y)

ja (x> y), tad

print *, 'Es pamanīju, ka x ir lielāks par y'

cits

print *, 'Šķiet, ka y nav mazāks par x'

beigties, ja

beigu programmas simbols

Jūs, iespējams, pamanīsit, ka es ielaidu “netiešo nevienu”. Tas ir normāli mūsdienu Fortran - tas liek sastādītājam pieprasīt, lai mainīgie tiktu skaidri deklarēti, lai nezināmie mainīgie tiktu atzīmēti kā kļūdas. Bez tā Fortran pieņem, ka mainīgie, kas sākas ar ‘i’ līdz ‘n’ (pirmie divi veselā skaitļa burti), ir veseli skaitļi, bet citi ir peldošā komata skaitļi (‘reāli’). Tas samazināja to karšu skaitu, kas mums bija jāizcērt pirms vairākiem gadu desmitiem, taču šajos jaunajos laikos tā parasti tiek noraizēta.

Palaidot šo programmu (un ierakstot 3.14. Un 1.57. Versijā), iegūst:

Ievadiet divus ciparus (x un y)

3.14

1.57

Summa x + y ir 4,71000004

Produkts x * y ir 4,92980051

Kubiņi x un y 30.9591484 3.86989355

x un y sinusija 1.59254798E-03 0.999999702

Es pamanīju, ka x ir lielāks par y

Fortran ir paredzēts matemātikai (FORmula TRANslation). Ņemiet vērā, ka “sin (…)” ir iebūvēts bez nepieciešamības iekļaut galveni vai pakotni. Protams, Fortran atbalsta peldošo un veselu skaitļu skaitļus, bet atbalsta arī sarežģītus skaitļus. Nav nepieciešamas piedevas.

Mans trešais piemērs ir saistīts ar cilpām (Fortranā to sauc par “do”):

programmas cilpa

netiešs neviens

vesels skaitlis: i, j, paturēt (100,2), w

w = 0

do i = 10, 50, 5

dari j = i, 20, 5

drukāt *, i, j

w = w + 1

turēt (w, 1) = i

turēt (w, 2) = j

beigas darīt

beigas darīt

do i = 1, w

drukāt *, 'saglabāt:', saglabāt (i, 1), saglabāt (i, 2)

beigas darīt

beigu programma

Drukas līnija manā paraugprogrammā tiek izpildīta tikai tad, ja darbojas j do-loop. J cilpa vispār nedarbojas, kad es pārsniedzu 20. Šis piemērs arī ievieš masīvus, izmantojot masīvu ar nosaukumu 'keep'. Fortran sāk masīvu numerāciju '1', nevis nulli, kas ir tas pats, kā amerikāņi numurē ēkas (2. stāvs attiecas uz pirmo stāvu, kas tiek pieņemts kā “1”). Citas vietas pasaulē izmanto ēkām, kuru pamatā ir nulle (“pirmais stāvs” ir tas, ko amerikāņi sauc par “otro stāvu”), piemēram, C un C ++. Rezultāts no šī “programmas cikla” piemēra ir parādīts zemāk:

           10          10

          10          15

          10          20

          15          15

          15          20

          20          20

turēt: 10 10

glabāt: 10 15

glabāt: 10 20

glabāt: 15 15

glabāt: 15 20

glabāt: 20 20

Pēdējā piemērā es definēšu apakšprogrammu (funkciju) ar nosaukumu “ave”, lai ņemtu vidēji trīs skaitļus, kurus es statiski definēju. Jūs ievērosiet, ka es kļuvu slinks un vienkārši uzrakstīju “beigas” pēc programmas un funkcijas. Tas ir labi, bet, ja jūs izmantojat vārdus, tāpat kā es to darīju iepriekš, kompilators palīdzēs pārbaudīt, vai beigas sakrīt ar to, kuru jūs vēlējāties.

Programma callret

netiešs neviens

īsts a, b, c

reālais av, avsq1, avsq2

īsta pr

dati a, b, c / 5.0,2.0,3.0 /

av = ave (a, b, c)

drukāt *, 'Vidējais', a, b, c, 'ir:', AV

beigas

reālā funkcija ave (x, y, z)

reālā x, y, z, summa

summa = x + y + z

ave = summa / 3,0

atgriešanās

beigas

Šis izdrukā:

Vidējais rādītājs 5.00000000 2.00000000 3.00000000 ir: 3.33333325

Jā, Fortran var formatēt izvadi. Ja iepriekš minēto “druku” aizstāsim šādi:

8. izdruka “Vidējais rādītājs”, a, b, c, “ir”, AV

8 formāts (a, 2 (f4.2, ','), f4.2, a, f7.5)

Rezultāts kļūs:

Vidējais 5.00, 2.00, 3.00 ir 3.33333

Fortran formatēšanu var veikt arī vienā rindā, un tam ir tāda pati jauka izeja:

drukāt "(a, 2 (f4.2, ','), f4.2, a, f7.5)", 'Vidējais', a, b, c, 'is', AV

Ja jūs esat ticis ticēts, ka Fortran ir dīvains, jūs maldinājāt. Es uzrakstīju visus šos piemērus tādā veidā, ko Fortran programmētāji sauc par “brīvo formu”. Tas oficiāli kļuva par daļu no Fortran ar “Fortran 90” standartu (līdz ar to manas instrukcijas kā .f90 vai .f95 izmantot kā failu paplašinājumus; tie norāda kompilatoram bez īpaša opcijas slēdžiem, ka mēs izmantojam brīvo formu). Paturiet prātā, ka 1956. gadā lietotāji vēlējās kaut ko tādu, kas paredzēts karšu perforatoriem. Es varētu stundām ilgi stāstīt par to, kā Fortran to pieņem ar kolonnām orientētiem formātiem un turpinājuma rakstzīmēm utt. Bet, kā jau esmu parādījis, jums tas tiešām nav jāmācās, lai rakstītu vai lasītu Fortran kodu.

Kāpēc datorzinātnieki vairās no Fortran? Lielisks jautājums. Fortran ir vecākā valoda (ap 1956. gadu). Tas sākās lentu, perforēto karšu un cilvēku datoru nomaiņas laikmetā. Tas ir pirms bloku strukturētas programmēšanas, parsēšanas teorijas un grafikas. Pa ceļam datorzinātnieki izpētīja sasniegumus skaitļošanas jomā, vienlaikus ieviešot tūkstošiem programmēšanas valodu, no kurām lielāko daļu neizdevās panākt. Neskatoties uz to, visās cilvēku darbības jomās modē ir „ārpus vecā, iekšā jaunā”. Datorzinātne neatšķiras.

Bet, kad skaitļu krokošana ir svarīga, nekas nav labāks vai vienkāršāks par Fortran. Es iesaku mums visiem zināt daudz rīku un izmantot labāko rīku šim darbam. Tas, ka mans uzticamais āmurs jau ilgu laiku ir bijis manā instrumentu kastē, nenozīmē, ka man tas nav vajadzīgs pareizajam darbam. Fortran neatšķiras.

Fortran ir ne tikai oriģināla augsta līmeņa programmēšanas valoda, tā ir dzīva, svarīga un plaši izmantota. Kurš sāka baumas ieteikt citādi?

 Resursi

  • Intel Fortran - ļoti izmantots x86 (Intel / AMD), augstas veiktspējas
    • Jūs varat pretendēt uz bezmaksas kompilatoru (un citiem rīkiem)
    • Izmēģinājuma eksemplāri ir pieejami ar iespēju tos iegādāties vēlāk
    • 2018. gada beta versija darbojas līdz 2018. gada jūlijam: līdz šim bez maksas izmēģiniet šo jaunāko un lielāko pilnībā funkcionējošo beta versiju, ieskaitot Fortran un saistītos rīkus: Intel Parallel Studio XE 2018 Beta - pievienojieties tūlīt
  • GNU Fortran - plašāks atbalsts (daudzi procesori, daudzas sistēmas), zemāka veiktspēja
    • atvērtā koda un bezmaksas
    • manā MacBook Air ... man bija jāsaka tikai “brūvēt instalēt gcc”, un es saņemu gfortran bez maksas

Noklikšķiniet šeit, lai lejupielādētu bezmaksas Intel Parallel Studio XE 30 dienu izmēģinājumu

$config[zx-auto] not found$config[zx-overlay] not found