Programavimas

Būkite smalsūs ir mokykitės: šiuolaikinis „Fortran“ trumpai

Mokslo ir inžinerijos pažanga daugeliu svarbių priemonių vis dar remiasi „Fortran“ nei bet kuria kita kalba. Nustebote? Jūs neturėtumėte būti, nors daugelis žmonių, kurie save vadina programuotojais, iš tikrųjų niekada neišmoko „Fortran“. Aš išmokysiu Fortraną per penkias minutes ar mažiau. Tai nepakenks, ir jūs žinosite, kokia galbūt yra pati svarbiausia ir įtakingiausia programavimo kalba.

Kompiuterininkai gali elgtis taip, lyg Fortrano neegzistuotų, tačiau populiarioji kultūra (Simpsonai, 26 sezonas, 10 serija) sekėsi geriau išmintingai pastebėjus: „Fortranas, didžiausia programavimo kalba!“ Iš tikrųjų daugiau nei pusė galingiausių pasaulio kompiuterių atliekamų skaičiavimų gaunama iš „Fortran“. Kai kuriose didelėse sistemose „Fortran“ kodas gali būti atsakingas už 80–100% skaičiavimo.

Tai taip pat nepaprastai lengva išmokti, kaip pamatysite su šia trumpa „Fortran“ programavimo įžanga. Aš manau, kad jūs jau žinote, kaip programuoti ne Fortran'e (jei programavimo srityje esate visiškai naujas, labai rekomenduoju išmokti „Fortran“ su „A Fortran Coloring Book“).

 Pradėkime

 programa labas

spausdinti *, "Sveikas, pasauli!"

pabaiga programa labas

Įveskite (failui naudokite .f95 arba .f90 plėtinį), sukompiliuokite, paleiskite tai ir atsispausdinkite „Labas, pasauli!“. „*“ Spausdintame pareiškime iš esmės reiškia formatuoti automatiškai.

Antrasis mano pavyzdys atlieka matematiką ir baigia teiginiais „if / then / else“:

programos mimatas

numanomai nėra

realus :: atsakymas, x, y, suma, prod, cubedx, cubedy

spausdinti *, 'Įveskite du skaičius (x ir y)'

skaityti *, x

skaityti *, y

suma = x + y

prod = x * y

kubelis = x ** 3;

kubetas = y ** 3;

spausdinti *, 'Suma x + y yra', suma

spausdinti *, 'Produktas x * y yra', prod

spausdinti *, „Cubed x ir y“, cubedx, cubedy

spausdinti *, „x ir y sinusas“, sin (x), sin (y)

jei (x> y) tada

spausdinti *, "pastebėjau, kad x yra didesnis nei y"

Kitas

spausdinti *, "Atrodo, kad y yra ne mažesnis nei x"

pabaiga jei

pabaigos programos mimatas

Galite pastebėti, kad įšokau į „implicit none“. Tai yra normalu šiuolaikiniame „Fortran“ - kompiliatorius liepia reikalauti, kad kintamieji būtų aiškiai deklaruojami, kad nežinomi kintamieji būtų pažymėti kaip klaidos. Be jo, „Fortran“ daro prielaidą, kad kintamieji, prasidedantys raide „i“ iki „n“ (pirmosios dvi sveikojo skaičiaus raidės), yra sveikieji skaičiai, o kiti yra slankiųjų kablelių skaičiai („tikrieji“). Tai sumažino skaičių kortelių, kurias mums reikėjo išmušti prieš kelis dešimtmečius, tačiau šiais naujaisiais laikais paprastai yra paniekinta.

Paleidus šią programą (ir įvedus 3.14 ir 1.57) gaunama:

Įveskite du skaičius (x ir y)

3.14

1.57

Suma x + y yra 4,71000004

Produktas x * y yra 4,92980051

Kubai x ir y 30.9591484 3.86989355

x ir y sinusai 1.59254798E-03 0.999999702

Pastebėjau, kad x yra didesnis už y

„Fortran“ sukurtas matematikai („FORmula TRANslation“). Atkreipkite dėmesį, kad „sin (…)“ yra įmontuotas be jokio antraštės ar paketo. Žinoma, „Fortran“ palaiko slankiojo kablelio ir sveiko skaičiaus skaičius, bet taip pat palaiko sudėtinius skaičius. Priedų nereikia.

Trečiasis mano pavyzdys yra kilpos („Fortran“ vadinamos „do“):

programos kilpa

numanomai nėra

sveikasis skaičius :: i, j, išlaikyti (100,2), w

w = 0

daryk i = 10, 50, 5

daryk j = i, 20, 5

spausdinti *, i, j

w = w + 1

išlaikyti (w, 1) = i

laikyti (w, 2) = j

pabaigos padaryti

pabaigos padaryti

daryk i = 1, w

spausdinti *, „laikyti:“, laikyti (i, 1), saugoti (i, 2)

pabaigos padaryti

pabaigos programos ciklas

Mano pavyzdinės programos spausdinimo eilutė vykdoma tik tada, jei veikia „j do-loop“. „J“ kilpa neveikia, kai aš viršiju 20. Šiame pavyzdyje taip pat pateikiami masyvai, naudojant masyvą, pavadintą „keep“. „Fortran“ pradeda masyvų numeraciją „1“, o ne nulį, tai yra tas pats būdas, kaip amerikiečiai skaičiuoja aukštus (2 aukštas reiškia pirmąjį aukštą, kuris laikomas „1“). Kitose pasaulio vietose savo pastatuose naudojama nulinė numeracija („pirmasis aukštas“ yra amerikiečių vadinamas „antrasis aukštas“), pvz., C ir C ++. To „programos ciklo“ pavyzdžio išvestis parodyta žemiau:

           10          10

          10          15

          10          20

          15          15

          15          20

          20          20

laikyti: 10 10

laikyti: 10 15

laikyti: 10 20

laikyti: 15 15

laikyti: 15 20

laikyti: 20 20

Paskutiniame pavyzdyje apibrėžsiu paprogramę (funkciją), vadinamą „ave“, kad imčiau trijų statiškai apibrėžtų skaičių vidurkį. Jūs pastebėsite, kad aš tingėjau ir tiesiog parašiau "pabaiga" po programos ir funkcijos. Tai gerai, bet jei naudosite pavadinimus, kaip aš dariau anksčiau, kompiliatorius padės patikrinti, ar pabaiga atitinka tai, ko norėjote.

Programa callret

numanomai nėra

tikrasis a, b, c

tikrasis av, avsq1, avsq2

tikras pr

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

av = ave (a, b, c)

spausdinti *, 'Vidutinis', a, b, c, 'yra:', AV

galas

reali funkcija ave (x, y, z)

tikrasis x, y, z, suma

suma = x + y + z

ave = suma / 3,0

grįžti

galas

Tai spausdina:

Vidutinis 5.00000000 2.00000000 3.00000000 yra: 3.33333325

Taip, „Fortran“ gali formatuoti išvestį. Jei pakeisime aukščiau esantį „spausdinimą“ taip:

spausdinti 8, „Vidutinis“, a, b, c, „yra“, AV

8 formatas (a, 2 (f4.2, ','), f4.2, a, f7.5)

Rezultatas taps:

Vidutinis 5,00, 2,00, 3,00 yra 3,33333

„Fortran“ formatavimas taip pat gali būti atliekamas vienoje eilutėje ir turi tą patį gražų išvestį:

spausdinti "(a, 2 (f4.2, ','), f4.2, a, f7.5)", 'Vidurkis', a, b, c, 'yra', AV

Jei buvote priverstas manyti, kad Fortranas yra keistas, buvote suklaidintas. Parašiau visus šiuos pavyzdžius, kuriuos „Fortran“ programuotojai vadina „laisva forma“. Tai oficialiai tapo „Fortran“ dalimi su „Fortran 90“ standartu (taigi mano nurodymai naudoti .f90 arba .f95 kaip failų plėtinius; tai pasako kompiliatoriui be specialaus jungikliai, kad mes naudojame laisvą formą). Turėkite omenyje, kad 1956 m. Vartotojai norėjo ko nors pritaikyti kortelių perforatoriams. Galėčiau kelias valandas kalbėti apie tai, kaip „Fortran“ priima tai su stulpeliais orientuotais formatais ir tęsiamaisiais simboliais ir pan. Tačiau, kaip jau parodžiau, jums to tikrai nereikia mokytis, norint rašyti ar skaityti „Fortran“ kodą.

Taigi kodėl „Fortran“ vengia informatikai? Puikus klausimas. „Fortran“ yra seniausia kalba (apie 1956 m.). Tai prasidėjo juostų, perfokortų ir žmogaus kompiuterių keitimo epochoje. Jis buvo ankstesnis už blokų struktūrizuotą programavimą, analizavimo teoriją ir grafiką. Kelyje kompiuterininkai tyrė kompiuterijos pažangą ir pristatė tūkstančius programavimo kalbų, kurių daugumos nepavyko pasiekti. Nepaisant to, visose žmogaus veiklos srityse madinga „išeiti iš seno, į naują“. Informatika niekuo nesiskiria.

Bet kai svarbu sugadinti skaičių, niekas nėra geresnis ar lengvesnis už „Fortran“. Aš siūlau, kad mes visi turėtume žinoti daugybę įrankių ir naudoti geriausią įrankį. Tai, kad mano patikimas plaktukas ilgą laiką buvo mano įrankių dėžėje, dar nereiškia, kad man jo nereikia tinkamam darbui. Fortranas niekuo nesiskiria.

„Fortran“ yra ne tik originali aukšto lygio programavimo kalba, ji yra gyva, svarbi ir plačiai naudojama. Kas pradėjo gandus siūlyti kitaip?

 Ištekliai

  • „Intel Fortran“ - labai naudojamas „x86“ („Intel“ / AMD), didelis našumas
    • Galite pretenduoti į nemokamą kompiliatorių (ir kitus įrankius)
    • Bandomąsias kopijas galima įsigyti vėliau
    • 2018 m. Beta versija tęsiasi iki 2018 m. Liepos: išbandykite šią naujausią ir geriausią visiškai veikiančią beta versiją, įskaitant „Fortran“ ir susijusius įrankius, iki tol nemokamai: „Intel Parallel Studio XE 2018 Beta“ - Prisijunkite dabar
  • GNU Fortran - platesnis palaikymas (daug procesorių, daug sistemų), mažesnis našumas
    • atviro kodo ir nemokama
    • mano „MacBook Air“ ... Aš turėjau pasakyti tik „Brew install gcc“ ir man gfortran nemokamai

Spustelėkite čia norėdami atsisiųsti nemokamą 30 dienų „Intel Parallel Studio XE“ bandomąją versiją