Programování

Buďte zvědaví a učte se: Moderní Fortran v kostce

Pokrok ve vědě a inženýrství se stále spoléhá na Fortran více než na jakýkoli jiný jazyk díky mnoha důležitým opatřením. Překvapený? Neměli byste být, ačkoli mnoho lidí, kteří si říkají programátoři, se Fortran nikdy nenaučili. Naučím vás Fortran za pět minut nebo méně. Nebude to bolet a budete vědět, co je možná nejdůležitější a nejvlivnější programovací jazyk vůbec.

Počítačoví vědci se mohou chovat, jako by Fortran neexistoval, ale populární kultura (Simpsonovi„Sezóna 26, 10. epizoda) si vedla lépe s moudrým postřehem:„ Fortran, největší z programovacích jazyků! “Ve skutečnosti více než polovina výpočtu prováděného nejsilnějšími počítači na světě pochází z Fortranu. V některých velkých systémech může být Fortranský kód zodpovědný za 80–100% výpočtu.

Je také neuvěřitelně snadné se naučit, jak uvidíte v tomto krátkém úvodu do programování ve Fortranu. Předpokládám, že už víte programovat v něčem jiném než ve Fortranu (pokud jste v programování úplně nový, velmi doporučuji učit se Fortran pomocí „Fortranské omalovánky“).

 Začněme

 program ahoj

print *, "Hello, World!"

ukončit program ahoj

Zadejte (použijte pro svůj soubor příponu .f95 nebo .f90), zkompilujte, spusťte a vytiskne „Hello, World!“. „*“ V tiskovém prohlášení v zásadě znamená formátovat automaticky.

Můj druhý příklad dělá nějakou matematiku a končí výroky „if / then / else“:

program mymath

implicitní žádný

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

print *, 'Napište dvě čísla (x a y)'

číst *, x

číst *, r

součet = x + y

prod = x * y

cubedx = x ** 3;

kubický = y ** 3;

print *, 'Součet x + y je', součet

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

print *, 'Cubed xay', cubedx, cubedy

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

if (x> y) then

print *, 'Všiml jsem si, že x je větší než y'

jiný

print *, 'Zdá se, že y není menší než x'

skončit, pokud

ukončit program mymath

Můžete si všimnout, že jsem vsunul „implicitní žádný“. To je v moderním Fortranu normální - říká kompilátoru, aby vyžadoval výslovné deklarace proměnných, aby byly neznámé proměnné označeny jako chyby. Bez něj Fortran předpokládá, že proměnné začínající na „i“ až „n“ (první dvě písmena celého čísla) jsou celá čísla a ostatní jsou čísla s plovoucí desetinnou čárkou („skutečná“). To snížilo počet karet, které jsme museli dělit před desítkami let, ale v dnešní moderní době se to obecně odsuzuje.

Spuštěním tohoto programu (a zadáním 3.14 a 1.57) získáte následující:

Zadejte dvě čísla (xay)

3.14

1.57

Součet x + y je 4,71000004

Produkt x * y je 4,92980051

Krychle x a y 30,9591484 3,86989355

sinus x a y 1,59254798E-03 0,999999702

Všiml jsem si, že x je větší než y

Fortran je určen pro matematiku (FORmula TRANslation). Všimněte si, že „sin (…)“ je zabudováno, aniž by bylo nutné uvádět záhlaví nebo balíček. Fortran samozřejmě podporuje čísla s plovoucí desetinnou čárkou a celá čísla, ale podporuje také komplexní čísla. Nejsou zapotřebí žádné přísady.

Můj třetí příklad zahrnuje smyčky (ve Fortranu nazývané „dělat“):

programová smyčka

implicitní žádný

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

w = 0

do i = 10, 50, 5

do j = i, 20, 5

tisknout *, i, j

w = w + 1

keep (w, 1) = i

keep (w, 2) = j

konec udělej

konec udělej

do i = 1, w

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

konec udělej

ukončit smyčku programu

Řádek tisku v mém ukázkovém programu se spustí pouze v případě, že je spuštěna smyčka j do. Smyčka j vůbec neběží, když i přesáhne 20. Tento příklad také zavádí pole s použitím pole s názvem „keep.“ Fortran začíná číslování pole na „1“ namísto nuly, což je stejný způsob, jakým Američané číslují podlaží (patro č. 2 označuje přízemí, o kterém se předpokládá, že je „1“). Jiná místa na světě používají pro své budovy číslování založené na nule („první patro“ je to, co Američané nazývají „druhé patro“), jako C a C ++ pro pole. Výstup z tohoto příkladu „programové smyčky“ je uveden níže:

           10          10

          10          15

          10          20

          15          15

          15          20

          20          20

zachovat: 10 10

zachovat: 10 15

zachovat: 10 20

zachovat: 15 15

zachovat: 15 20

zachovat: 20 20

V mém posledním příkladu definuji podprogram (funkci) s názvem „ave“, který vezme průměr ze tří čísel, která staticky definuji. Všimnete si, že jsem zlenivěl a po programu a funkci jsem právě napsal „konec“. To je v pořádku, ale pokud používáte jména, jako jsem to udělal dříve, kompilátor vám pomůže zkontrolovat, zda se konec shoduje s tím, co chcete.

Programové volání

implicitní žádný

skutečné a, b, c

skutečné av, avsq1, avsq2

skutečný ave

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

av = ave (a, b, c)

print *, 'Průměr z', a, b, c, 'je:', AV

konec

reálná funkce ave (x, y, z)

reálné x, y, z, součet

součet = x + y + z

ave = součet / 3,0

vrátit se

konec

Toto vytiskne:

Průměr 5,00000000 2,00000000 3,00000000 je: 3,33333325

Ano, Fortran může formátovat výstup. Pokud výše uvedený „tisk“ nahradíme následujícím způsobem:

tisk 8, 'Průměr', a, b, c, 'je', AV

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

Výstupem bude:

Průměr 5,00, 2,00, 3,00 je 3,33333

Fortran formátování lze také provést na jednom řádku a mají stejný pěkný výstup:

print "(a, 2 (f4.2, ','), f4.2, a, f7.5)", 'Průměr', a, b, c, 'je', AV

Pokud jste byli vedeni k přesvědčení, že Fortran je divný, byl jste uveden v omyl. Všechny tyto příklady jsem napsal v tom, co programátoři Fortranu nazývají „free form.“ To se oficiálně stalo součástí Fortranu se standardem „Fortran 90“ (tedy moje instrukce k použití souborů .f90 nebo .f95 jako přípony souborů; to sdělují překladači, bez zvláštních přepínače, které používáme zdarma). Mějte na paměti, že v roce 1956 uživatelé chtěli něco zaměřeného na údery karet. Mohl bych pokračovat hodiny o tom, jak to Fortran vychází se sloupcově orientovanými formáty a pokračovacími znaky atd. Ale jak jsem ukázal, opravdu se to při psaní nebo čtení Fortranského kódu nemusíte učit.

Proč se tedy Fortran vyhýbají počítačoví vědci? Skvělá otázka. Fortran je nejstarší jazyk (c. 1956). Začalo to v éře kazet, děrných štítků a nahrazování lidských počítačů. Předchází blokové strukturované programování, teorii analýzy a grafiku. Během toho počítačoví vědci zkoumali pokroky ve výpočetní technice a zaváděli tisíce programovacích jazyků, z nichž se většina nedokázala uchytit. Nicméně v každé oblasti lidského snažení je „venku se starým, v novém“ módní. Počítačová věda se nijak neliší.

Ale když je důležitá křupavost čísel, nic není lepší nebo snadnější než Fortran. Navrhuji, abychom všichni znali spoustu nástrojů a pro práci používali ten nejlepší nástroj. Jen proto, že moje spolehlivé kladivo bylo v mém panelu nástrojů dlouho, neznamená, že ho pro správnou práci nepotřebuji. Fortran se nijak neliší.

Fortran není jen původní programovací jazyk na vysoké úrovni, je také živý, důležitý a široce používaný. Kdo začal zvěsti naznačovat opak?

 Zdroje

  • Intel Fortran - silně používaný pro x86 (Intel / AMD), vysoký výkon
    • Můžete mít nárok na bezplatný překladač (a další nástroje)
    • K dispozici jsou zkušební kopie s možností zakoupení později
    • Beta verze 2018 běží do července 2018: vyzkoušejte tuto nejnovější a největší plně funkční beta verzi, včetně Fortranu a souvisejících nástrojů, do té doby zdarma: Intel Parallel Studio XE 2018 Beta - Připojte se nyní
  • GNU Fortran - širší podpora (mnoho procesorů, mnoho systémů), nižší výkon
    • open source a zdarma
    • na mém MacBooku Air ... stačilo říct „brew install gcc“ a gfortran dostanu zdarma

Kliknutím sem si stáhnete 30denní zkušební verzi Intel Parallel Studio XE zdarma

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