Programiranje

Bodite radovedni in se učite: Sodobni Fortran na kratko

Številni pomembni ukrepi še vedno bolj kot kateri koli jezik slonijo na napredku znanosti in tehnike. Presenečeni? Ne bi smeli biti, čeprav se mnogi ljudje, ki se imenujejo programerji, dejansko nikoli niso naučili Fortrana. Fortran vas bom naučil čez pet minut ali manj. Ne bo škodilo in vedeli boste, kateri je morda najpomembnejši in najvplivnejši programski jezik doslej.

Računalniki se lahko obnašajo, kot da Fortran ne obstaja, vendar popularna kultura (The Simpsons, 26. sezona, 10. epizoda) se je bolje odrezal z modrim opazovanjem: »Fortran, največji izmed programskih jezikov!« Pravzaprav več kot polovica izračunov, ki jih opravijo najmočnejši računalniki na svetu, prihaja iz Fortrana. V nekaterih velikih sistemih je lahko koda Fortran odgovorna za 80-100% izračuna.

Prav tako je neverjetno enostaven za učenje, kot boste videli v tem kratkem uvodu v Fortran programiranje. Predvidevam, da že znate programirati za kaj drugega kot za Fortran (če ste popolnoma novi v programiranju, toplo priporočam, da se Fortran naučite z “Pobarvanko Fortran”).

 Začnimo

 program zdravo

print *, "Pozdravljen, svet!"

konec programa zdravo

Vnesite (za datoteko uporabite končnico .f95 ali .f90), prevedite, zaženite to in natisne »Hello, World!«. "*" V izjavi za tisk v bistvu pomeni samodejno formatirajte.

Moj drugi primer opravi nekaj matematike in konča z izjavami "če / potem / drugače":

program mymath

implicitno nič

real :: odgovor, x, y, vsota, prod, cubedx, cubedy

print *, 'Vtipkajte dve številki (x in y)'

beri *, x

beri *, y

vsota = x + y

prod = x * y

kubedx = x ** 3;

kockast = y ** 3;

print *, 'Vsota x + y je', vsota

print *, 'Izdelek x * y je', prod

print *, 'Cubed x and y', cubedx, cubedy

natisni *, 'sinus x in y', sin (x), sin (y)

če (x> y), potem

print *, 'Opazil sem, da je x večji od y'

drugače

print *, 'Zdi se, da y ni manjši od x'

konec, če

konec programa mymath

Morda boste opazili, da sem zdrsnil v »implicitno nič«. To je normalno v sodobnem Fortranu - prevajalniku pove, da zahteva, da so spremenljivke izrecno deklarirane, tako da so neznane spremenljivke označene kot napake. Brez tega Fortran domneva, da so spremenljivke, ki se začnejo z 'i' do 'n' (prvi dve črki celih števil), celo število, druge pa s števili s plavajočo vejico ('real'). To je zmanjšalo število kart, ki smo jih morali udariti pred desetletji, vendar se v teh sodobnih časih na splošno ne strinjajo.

Zagon tega programa (in tipkanje v 3.14 in 1.57) prinese naslednje:

Vnesite dve številki (x in y)

3.14

1.57

Vsota x + y je 4,71000004

Zmnožek x * y je 4,92980051

Kockana x in y 30.9591484 3.86989355

sinus x in y 1.59254798E-03 0.999999702

Opazil sem, da je x večji od y

Fortran je zasnovan za matematiko (FORmula TRANSlation), upoštevajte, da je "sin (...)" vgrajen, ne da bi morali vključevati glavo ali paket. Seveda Fortran podpira številke s plavajočo vejico in celo število, podpira pa tudi kompleksne številke. Dodatki niso potrebni.

Moj tretji primer vključuje zank (v Fortranu se imenuje "do"):

programska zanka

implicitno nič

celo število :: i, j, keep (100,2), w

w = 0

ali i = 10, 50, 5

naredimo j = i, 20, 5

natisni *, i, j

w = w + 1

obdrži (w, 1) = i

obdrži (w, 2) = j

na koncu naredite

na koncu naredite

ali i = 1, w

print *, 'keep:', keep (i, 1), keep (i, 2)

na koncu naredite

končna zanka programa

Vrstica za tiskanje v mojem vzorčnem programu se izvede samo, če teče j-zanka. Zanka j se sploh ne zažene, ko presežem 20. Ta primer uvaja tudi nize z uporabo polja z imenom »obdrži«. Fortran začne oštevilčenje matrike na »1« namesto na nič, kar je enako, kot Američani štejejo nadstropja stavb (2. nadstropje se nanaša na pritličje, za katero se domneva, da je "1"). Drugi kraji na svetu za svoje zgradbe uporabljajo številčenje na osnovi nič ("prvo nadstropje" je tisto, kar Američani imenujejo "drugo nadstropje"), kot to počneta C in C ++ za nize. Rezultat tega primera „programske zanke“ je prikazan spodaj:

           10          10

          10          15

          10          20

          15          15

          15          20

          20          20

obdrži: 10 10

obdrži: 10 15

obdrži: 10 20

obdrži: 15 15

obdrži: 15 20

obdrži: 20 20

V zadnjem primeru bom opredelil podprogram (funkcijo), imenovan "ave", da vzamem povprečje treh števil, ki jih statično definiram. Opazili boste, da sem se lenil in po programu in funkciji pravkar napisal 'konec'. V redu je, toda če uporabljate imena, kot sem prej, bo prevajalnik pomagal preveriti, ali se konec ujema s tistim, za katerega ste želeli, da se ujema.

Program callret

implicitno nič

pravi a, b, c

resnična av, avsq1, avsq2

pravi ave

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

av = ave (a, b, c)

print *, 'Povprečje', a, b, c, 'je:', AV

konec

realna funkcija ave (x, y, z)

realni x, y, z, vsota

vsota = x + y + z

ave = vsota / 3,0

vrnitev

konec

To natisne:

Povprečje 5.00000000 2.00000000 3.00000000 je: 3.33333325

Da, Fortran lahko formatira izhodne podatke. Če zgornji “print” nadomestimo na naslednji način:

print 8, 'Povprečje', a, b, c, 'je', AV

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

Rezultat bo:

Povprečje 5,00, 2,00, 3,00 je 3,33333

Formatiranje Fortran lahko izvedete tudi v eni vrstici in ima enake lepe rezultate:

print "(a, 2 (f4.2, ','), f4.2, a, f7.5)", 'Povprečje', a, b, c, 'je', AV

Če so vas prepričali, da je Fortran čuden, so vas zavedli. Vse te primere sem zapisal v tisto, kar Fortran programerji imenujejo „prosta oblika“. To je uradno postalo del Fortrana s standardom „Fortran 90“ (od tod moja navodila za uporabo .f90 ali .f95 kot pripone datotek; ti sporočajo prevajalniku, brez posebnih stikala, ki jih uporabljamo v prosti obliki). Ne pozabite, da so leta 1956 uporabniki želeli nekaj, kar je namenjeno udarcem s kartami. Lahko bi ure in ure nadaljeval o tem, kako Fortran to prilagodi s stolpci usmerjenimi formati in nadaljevalnimi znaki itd. Toda, kot sem že pokazal, tega resnično ni treba naučiti za pisanje ali branje Fortranove kode.

Zakaj se torej računalničarji izogibajo Fortrana? Super vprašanje. Fortran je najstarejši jezik (ok. 1956). Začelo se je v dobi trakov, luknjanih kart in nadomeščanja človeških računalnikov. Pred blokovskim strukturiranim programiranjem, teorijo razčlenjevanja in grafiko. Na tej poti so računalniški znanstveniki raziskovali napredek v računalništvu, medtem ko so uvajali na tisoče programskih jezikov, ki jih večina ni uspela ujeti. Kljub temu je na vseh področjih človeškega prizadevanja v modi "ven s starim, nov z novim". Računalništvo ni nič drugače.

Ko pa je drobljenje številk pomembno, ni nič boljšega ali lažjega od Fortrana. Predlagam, da bi morali vsi poznati veliko orodij in uporabiti najboljše orodje za delo. To, da je moje zanesljivo kladivo že dolgo v orodjarni, še ne pomeni, da ga ne rabim za pravo službo. Fortran ni nič drugačen.

Fortran ni samo izvirni programski jezik na visoki ravni, je živ, pomemben in široko uporabljen. Kdo je začel govorice, da je predlagal drugače?

 Viri

  • Intel Fortran - zelo uporabljen za x86 (Intel / AMD), visoko zmogljiv
    • Lahko se kvalificirate za brezplačni prevajalnik (in druga orodja)
    • Na voljo so preizkusne kopije z možnostjo poznejšega nakupa
    • Beta 2018 traja do julija 2018: do takrat brezplačno preizkusite to najnovejšo in največjo popolnoma funkcionalno beta, vključno s Fortranom in sorodnimi orodji: Intel Parallel Studio XE 2018 Beta - Pridružite se zdaj
  • GNU Fortran - širša podpora (veliko procesorjev, veliko sistemov), nižja zmogljivost
    • odprtokodna in brezplačna
    • na svojem MacBook Air-u ... rekel sem le "brew install gcc" in gfortran dobim brezplačno

Kliknite tukaj, če želite prenesti brezplačno 30-dnevno preskusno različico Intel Parallel Studio XE

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