Programovanie

Buďte zvedaví a učte sa: Moderný Fortran v skratke

Pokrok v oblasti vedy a techniky sa v mnohých dôležitých opatreniach stále spolieha na Fortran viac ako v akomkoľvek inom jazyku. Prekvapený? Nemali by ste byť, hoci veľa ľudí, ktorí si hovoria programátori, sa Fortran nikdy nenaučili. Naučím ťa Fortran za päť minút alebo menej. Nebude to bolieť a budete vedieť, aký je možno najdôležitejší a najvplyvnejší programovací jazyk vôbec.

Počítačoví vedci sa môžu správať, akoby Fortran neexistoval, ale populárna kultúra (Simpsonovci, Sezóna 26, 10. epizóda) sa darilo lepšie s múdrym pozorovaním: „Fortran, najväčší z programovacích jazykov!“ V skutočnosti viac ako polovica výpočtov vykonaných najvýkonnejšími počítačmi na svete pochádza z Fortranu. V niektorých veľkých systémoch môže byť Fortranov kód zodpovedný za 80 - 100% výpočtu.

Je tiež neuveriteľne ľahké sa naučiť, ako uvidíte v tomto krátkom úvode do programovania vo Fortrane. Predpokladám, že už viete programovať v niečom inom ako vo Fortrane (ak ste v programovaní úplne nováčikom, veľmi odporúčam naučiť sa Fortran pomocou „Fortranskej omaľovánky“).

 Začnime

 program ahoj

print *, "Ahoj, svet!"

ukončiť program ahoj

Zadajte (pre svoj súbor použite príponu .f95 alebo .f90), kompilujte, spustite to a vytlačí sa „Hello, World!“. „*“ Vo vyhlásení pre tlač v podstate znamená formátovať automaticky.

Môj druhý príklad uvádza matematiku a končí príkazmi ‘if / then / else‘:

program mymath

implicitné žiadne

real :: answer, x, y, sum, prod, cubedx, cubedy

print *, 'Napíšte dve čísla (x a y)'

čítať *, x

prečítať *, r

suma = x + r

prod = x * y

cubedx = x ** 3;

kocka = y ** 3;

print *, 'Súčet x + y je', súčet

print *, 'Produkt x * y is', prod

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

print *, 'sine of x and y', sin (x), sin (y)

ak (x> y) potom

print *, 'Všimol som si, že x je väčšie ako y'

inak

print *, 'Zdá sa, že y nie je menšie ako x'

koniec Ak

ukončiť program

Môžete si všimnúť, že som vsunul „implicitné žiadne“. To je v modernom Fortrane bežné - hovorí kompilátoru, aby vyžadoval explicitné deklarovanie premenných, aby boli neznáme premenné označené ako chyby. Bez toho Fortran predpokladá, že premenné začínajúce na „i“ až „n“ (prvé dve písmená celého čísla) sú celé čísla a iné sú čísla s pohyblivou rádovou čiarkou („skutočné“). To znížilo počet kariet, ktoré sme museli dierovať pred desiatkami rokov, ale v dnešnej modernej dobe sa to všeobecne zamýšľa.

Spustením tohto programu (a zadaním 3.14 a 1.57) získate toto:

Zadajte dve čísla (xay)

3.14

1.57

Súčet x + y je 4,71000004

Produkt x * y je 4,92980051

Kocky x a y 30,9591484 3,86989355

sínus x a y 1,59254798E-03 0,999999702

Všimol som si, že x je väčšie ako y

Fortran je určený pre matematiku (FORmula TRANslation). Všimnite si, že „sin (...)“ je zabudovaný bez toho, aby bolo potrebné zahrnúť akúkoľvek hlavičku alebo balík. Fortran samozrejme podporuje čísla s pohyblivou rádovou čiarkou a celé číslo, ale podporuje tiež komplexné čísla. Nie sú potrebné žiadne prísady.

Môj tretí príklad zahŕňa slučky (vo Fortrane sa nazývajú „robiť“):

programová slučka

implicitné žiadne

integer :: i, j, keep (100,2), w

w = 0

robiť i = 10, 50, 5

do j = i, 20, 5

tlačiť *, i, j

w = w + 1

keep (w, 1) = i

ponechať (w, 2) = j

koniec urob

koniec urob

robiť i = 1, ž

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

koniec urob

ukončiť slučku programu

Riadok tlače v mojom ukážkovom programe sa vykoná iba vtedy, ak je spustená slučka j do-loop. Slučka j nefunguje vôbec, keď prekročím 20. Tento príklad tiež zavádza polia s použitím poľa s názvom „keep“. Fortran začína číslovanie polí na „1“ namiesto nuly, čo je rovnaké, ako Američania číslujú poschodia budov (2. poschodie sa týka prízemia, ktoré sa považuje za „1“). Ostatné miesta na svete používajú pre svoje budovy číslovanie založené na nule („prvé poschodie“ je to, čo Američania nazývajú „druhé poschodie“), ako napríklad C a C ++ pre polia. Výstup z tohto príkladu „programovej slučky“ je uvedený nižšie:

           10          10

          10          15

          10          20

          15          15

          15          20

          20          20

zachovať: 10 10

ponechať: 10 15

ponechať: 10 20

ponechať: 15 15

ponechať: 15 20

ponechať: 20 20

V mojom poslednom príklade definujem podprogram (funkciu) s názvom „ave“, aby som vzal priemer troch čísel, ktoré staticky definujem. Všimnete si, že som lenivý a po programe a funkcii som práve napísal koniec. To je v poriadku, ale ak použijete mená, ako som to urobil predtým, kompilátor vám pomôže skontrolovať, či sa koniec zhoduje s tým, čo chcete.

Programové volanie

implicitné žiadne

skutočné a, b, c

skutočné av, avsq1, avsq2

skutočný ave

údaje a, b, c / 5,0,2,0,3,0 /

av = ave (a, b, c)

print *, 'Priemer z', a, b, c, 'je:', AV

koniec

reálna funkcia ave (x, y, z)

skutočné x, y, z, súčet

suma = x + y + z

ave = suma / 3,0

návrat

koniec

Toto vytlačí:

Priemer 5,00000000 2,00000000 3,00000000 je: 3,33333325

Áno, Fortran môže formátovať výstup. Ak nahradíme „tlač“ vyššie, postupujte takto:

tlač 8, 'Priemer z', a, b, c, 'je', AV

8 formát (a, 2 (f4.2, ','), f4.2, a, f7.5)

Výstupom bude:

Priemer 5,00, 2,00, 3,00 je 3,33333

Formátovanie Fortranu je možné vykonať aj na jednom riadku a mať rovnaký pekný výstup:

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

Ak ste sa dostali k presvedčeniu, že Fortran je zvláštny, boli ste uvedení do omylu. Všetky tieto príklady som napísal v tom, čo programátori z Fortranu nazývajú „free form.“ To sa oficiálne stalo súčasťou Fortranu so štandardom „Fortran 90“ (z toho vyplýva aj môj návod, ako prípony súborov používať .f90 alebo .f95; tieto informujú kompilátora bez zvláštnych prepínače, ktoré používame bezplatne). Pamätajte, že v roku 1956 chceli používatelia niečo zamerané na dierovanie kariet. Mohol by som pokračovať celé hodiny o tom, ako to Fortran vyhovuje formátom založeným na stĺpcoch a pokračovacím znakom atď. Ale ako som ukázal, na písanie alebo čítanie kódu Fortran sa to naozaj nemusíš učiť.

Prečo sa teda Fortranu vyhýbajú počítačoví vedci? Skvelá otázka. Fortran je najstarší jazyk (asi 1956). Začalo to v ére pások, diernych štítkov a výmeny ľudských počítačov. Predchádza blokovanie štruktúrovaného programovania, teórie syntaktickej analýzy a grafiky. Počas toho počítačoví vedci skúmali pokrok vo výpočtovej technike a zavádzali tisíce programovacích jazykov, z ktorých sa väčšina nedokázala uchytiť. Napriek tomu je v každej oblasti ľudského snaženia módne „von so starým, s novým“. Počítačová veda sa nijako nelíši.

Ale keď je dôležité rozdelenie čísel, nič nie je lepšie alebo jednoduchšie ako Fortran. Navrhujem, aby sme všetci poznali veľa nástrojov a aby sme pri práci používali ten najlepší nástroj. To, že moje spoľahlivé kladivo bolo dlho v mojej schránke s nástrojmi, ešte neznamená, že ho na správnu prácu nepotrebujem. Fortran sa nijako nelíši.

Fortran je nielen pôvodný programovací jazyk na vysokej úrovni, je aj živý, dôležitý a široko používaný. Kto začal hovoriť, aby naznačil opak?

 Zdroje

  • Intel Fortran - veľmi používaný pre x86 (Intel / AMD), vysoký výkon
    • Môžete mať nárok na bezplatný prekladač (a ďalšie nástroje)
    • K dispozícii sú skúšobné kópie s možnosťou zakúpenia neskôr
    • Beta verzia 2018 trvá do júla 2018: vyskúšajte túto najnovšiu a najväčšiu plne funkčnú beta verziu vrátane Fortranu a súvisiacich nástrojov, dovtedy zadarmo: Intel Parallel Studio XE 2018 Beta - Pripojte sa teraz
  • GNU Fortran - širšia podpora (veľa procesorov, veľa systémov), nižší výkon
    • otvorený zdroj a zadarmo
    • na mojom MacBooku Air ... stačilo povedať „brew install gcc“ a gfortran mám zadarmo

Kliknite sem a stiahnite si bezplatnú 30-dňovú skúšobnú verziu Intel Parallel Studio XE

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