Vrchní velitelství letectva. Vzdušné síly Ruské federace
Byl jsem vyzván, abych zkusil napsat svůj první příspěvek zde, kde navrhuje používat C++ pro učení. Ano, na toto téma mnoho kopií bylo rozbito.
Já, asi jako většina školáků v rozlehlosti naší rozlehlé Vlasti, jsem se začal učit základy přes modrou obrazovku, ale ne smrti, ale Turbo Pascalu 7.0. Byl tam samozřejmě Basic, se kterým jsem se poprvé setkal předškolním věku na sovětském počítači "Elektronika". Pak to vypadalo jako zvláštní textový editor, protože počítač očima dítěte byl stvořen pro hry. Již v ústavu jsem se však seznámil s jazykem Fortran, když jsem se o něm dozvěděl, stále se divím, proč se nepoužívá k výuce.
Ano, mnozí řeknou, že jazyk je mrtvý, neodpovídá to moderní reality, a učebnice s názvem, jako je ten na obrázku, vykouzlí jen úsměv. Pokusím se vysvětlit, proč je tento jazyk tak úžasný a proč jej doporučuji jako první jazyk. Pokud máte zájem, vítejte na kočičce.
Domnívám se, že by měly být znovu položeny základy pro základy programování školní léta, alespoň na střední škole. I když v životě bude počítač sloužit pouze k psaní textu ve Wordu nebo ke komunikaci sociální sítě, minimální znalosti o tom, co je algoritmus a jak strukturovat sekvenci akcí, abyste získali požadovaný výsledek, podle alespoň neublíží malému chlapci v dospělosti, ale s největší pravděpodobností pomůže vytvořit zvláštní myšlení.
Aby hodiny informatiky byly radostí a ne noční můrou, musí žák rozumět tomu, co dělá, jak to dělá a proč to dopadá tak a ne jinak. Koneckonců, v podstatě musíte správně předat informace o cyklu a podmíněném operátoru, aby člověk mohl psát programy sám. Zároveň platí, že čím jednodušší je syntaxe jazyka, tím snazší je pochopit logiku psaní kódu. Pokud se člověk naučí skládat správný algoritmus, pak pro programování v jiných jazycích stačí znát syntaxi tohoto jazyka a základ bude již položen.
Co je na Fortranu tak zvláštního?
Vraťme se k historii vzniku tohoto jazyka. Objevila se ve vzdálených 50. letech minulého století, kdy byly počítače ještě velké, programátorů málo a informatika se ve škole nevyučovala a byla obecně považována za pseudovědu. Potřebovali jsme jednoduchý jazyk, který by inženýrům a vědcům pomohl „dodávat“ vzorce napsané na papíře do počítačů, a to i prostřednictvím děrných štítků.Odtud název samotného jazyka: Pro mula Tran slator nebo „překladač vzorců“. Tito. Zpočátku byl jazyk zaměřen na lidi bez speciálního vzdělání, což znamená, že musel být co nejjednodušší.
Inu, jednoduchost se tvůrcům povedla. Klasický první program vypadá takto:
Program hw write(*,*) "Ahoj světe!" konec
Syntaxe je ještě o něco jednodušší než u Pascalu, není třeba dávat "na konec řádku"; ;
"nebo" :
" před rovnítkem. Navíc lidé s minimálními znalostmi anglický jazyk, pochopit význam nejjednodušší program nebude těžké.
Zde chci poznamenat, že Fortran má několik revizí standardů, z nichž hlavní jsou 77 a 90 (při zachování kontinuity). 77 Fortran je opravdu archaický, existuje zde limit na délku řádku a je nutné odsadit začátek řádku, což může mladému kandidátovi na programátora způsobit kulturní šok. Ne nadarmo programy napsané ve Fortranu 77 dostaly z úst mého přítele stručné jméno „Brežněvův kód“. Proto veškerý můj text odkazuje na jazykovou normu 90 a novější.
Jako příklad uvedu kód pro výpočet součtu nezáporných celých čísel od 1 do n zadaných z klávesnice, který napsala moje postgraduální studentka, když ji učila programovat od nuly. Bylo to místo, kde jsem zažil výuku Fortranu jako prvního jazyka. Doufám, že to pro ni bylo přínosné a že můj experiment byl úspěšný. Na pár hodinách se naučila alespoň základy, z nichž první byla přednáška o jazyce.
Číslo programu implicitní žádné! Proměnné celé číslo n,i,s ! Tělo chisla s=0 napište (*,*) "Zadejte n" čtěte (*,*) n if (n.le.0) pak napište (*,*) "Záporné nebo nulové" jinak udělejte i=1,n s =s+i end do napište (*,*) "Sum=", s end if end
Je snadné vidět, že způsob, jakým myslíme, je způsob, jakým píšeme kód. Studentovi v zásadě nemohou nastat žádné potíže. Pozorný čtenář se samozřejmě zeptá, co se skrývá za implicitním none a dvěma hvězdičkami v závorce oddělenými čárkami. implicitní none nám říká, že explicitně specifikujeme typ proměnných, zatímco bez této položky kompilátor uhodne typ sám. První hvězdička znamená, že vstup a výstup probíhá na obrazovce, a druhá znamená, že vstupní a výstupní formát je detekován automaticky. Ve skutečnosti program Fortran nevypadá o nic složitější než výše napsaný kus kódu.
A co softwarové prostředí?
Ve školách a ve všech vládních agenturách často vyvstává otázka týkající se softwaru, zejména jeho licencování. Protože peníze nejsou na tyto potřeby nijak zvlášť vyčleněny. Alespoň za mých časů to byl problém, možná se teď situace změnila k lepšímu.Každý může psát programy ve Fortranu. textový editor. Pokud chcete zvýraznění syntaxe, můžete použít Notepad++ (podporuje pouze standardní syntaxi 77) nebo SublimeText. Napsali jsme program, jak ho zkompilujeme? Vše je zde jednoduché, můžete použít bezplatný GNU Fotran. Pokud ho plánujete používat nekomerčně, pak můžete použít i kompilátor od Intelu, který je dobře optimalizován pro stejnojmenné procesory a je dodáván s minimálním požadovaným IDE. Tito. Vstupní práh je velmi preferenční.
Nejlepším vývojovým prostředím pro Fortran podle mnoha uživatelů zůstává Compaq Visual Fortran 6.6, jehož nejnovější verze byla vydána na počátku 21. století. Proč se stalo, že si mezi uživateli Fortranu získalo takovou oblibu prostředí založené na Visual Studiu 6.0, které běží na Windows XP maximálně 32 bit bez tance s tamburínou a má limit na použitou paměť. Odpověď je znázorněna na obrázku níže.
Jedná se o Compaq Array Visualizer, což je velmi pohodlný nástroj pro vizualizaci 1, 2 a 3-rozměrných polí během ladění programu přímo z debuggeru. Jak se říká, když jsem to jednou zkusil, teď to jím. Faktem je, že Fortran se nyní používá hlavně ve vědě (o čemž bude řeč později), zejména v oblasti, kterou se zabývám, konkrétně ve fyzice atmosféry. Při ladění programů představují pole různá meteorologická pole, jako je teplota, tlak, rychlost větru. Hledejte chybu v grafických polí mnohem jednodušší než psaní čísel, zejména proto, že obvykle víte, jak má pole vypadat, takže zjevné chyby jsou okamžitě odstraněny.
Bohužel veškerý vývoj na kompilátoru byl přenesen z Compaqu na Intel. Intel zpočátku podporoval Array Visualizer, nicméně tyto verze již byly bledým odrazem produktu od Compaqu, práce s nimi nebyla tak pohodlná jako dříve, ale alespoň minimální funkčnost byla zachována. Bohužel, Intel přestal vyvíjet nové verze Array Visualizer, čímž to ukončil nejpohodlnější nástroj. To je důvod, proč většina komunity Fortran píše programy a ladí je pod Compaq Visual Fortran na Windows a spouští bojové výpočty na linuxových serverech pomocí kompilátorů Intel. Intel, prosím, vyslyš prosby uživatelů, vrať do svého debuggeru normální nástroj pro vizualizaci polí!
Fortranovo místo v moderním světě
A nyní se dostáváme k samotnému tématu, které obvykle vyvolává vzrušené diskuse s mými kolegy, kteří používají Matlab, kteří tvrdí, že je popsáno v tento příspěvek vzácný jazyk není k ničemu. Tady s nimi nesouhlasím. Faktem je, že Fortran byl historicky používán v inženýrských nebo vědeckých výpočtech, a proto časem získal mnoho hotových knihoven a programových kódů pro řešení konkrétního problému.
Kód v doslova dědí se z generace na generaci a je také dobře zdokumentován. Můžete najít mnoho hotových řešení rovnic matematické fyziky, lineární algebry (zde je třeba poznamenat úspěšnou implementaci práce s maticemi), integrálních a diferenciálních rovnic a mnohem, mnohem více. V oblasti fyzikálních a matematických věd je asi těžké najít problém, pro který by nebyl implementován algoritmus ve Fortranu. A pokud vezmete v úvahu vynikající optimalizaci kompilátorů Intel pro procesory Intel, podporu paralelního počítání na vysoce výkonných clusterech, pak je jasné, proč vědecká komunita tento jazyk zaujímá zasloužené první místo. Myslím, že kompilátor Fortran můžete najít nainstalovaný na jakémkoli superpočítači.
Většina seriózních modelů, alespoň v oblasti fyziky atmosféry, je napsána ve Fortranu. Ano, ano, předpověď počasí, která čas od času každého zajímá, se získává pomocí výpočtů modelů psaných v tomto jazyce. Jazyk navíc nestagnuje, ale neustále se zlepšuje. Po dříve popsaných standardech 77 a 90 se tak objevila nová vydání 95, 2003, 2008, jejichž podpora byla zavedena do současných překladačů. Nejnovější verze Fortran poněkud osvěžil starý osvědčený jazyk, poskytl podporu modernímu stylu, přidal objektově orientované programování, jehož absence byla téměř nejdůležitějším trumfem odpůrců tohoto jazyka. Portland Group navíc vydala PGI CUDA Fortran Compiler, který umožňuje vysoce paralelní výpočty na grafických kartách. Pacient je tedy více než naživu, což znamená, že programátoři Fortran jsou stále žádaní.
Místo doslovu
A nyní bych se rád vrátil k původně nastolenému tématu o výuce programování a pokusil se stručně formulovat hlavní výhody Fortranu při jeho výběru jako prvního jazyka.- Fortran se velmi snadno učí, syntaxe je srozumitelná i pro netrénovaného člověka. Jakmile budete znát základy, je snadné se znovu naučit jakýkoli jiný jazyk.
- Bezplatná sada nástrojů vám umožní nedostávat zbytečné otázky od držitelů autorských práv.
- Tento jazyk je učitelům známý, protože existuje již dlouhou dobu, a našimi učiteli jsou především zástupci starší generace.
- Široce rozšířený po celém světě a je pokladnicí všech druhů knihoven.
- Standardizované, multiplatformní a kompatibilní s dřívějšími revizemi.
- Užitečné pro studenty technických, a zejména fyzikálních a matematických oborů, díky svému zaměření na vědecké a inženýrské výpočty.
- Relevantní a žádané dodnes.
Přednáška 3. Struktura programu. Implementace algoritmu lineární struktura ve Fortranu.
Struktura programu Fortran
Program se obecně skládá z hlavního (MAIN) programu a podprogramů (SUBROUTINE a (nebo) FUNCTION).
V hlava naprogramovaný vše algoritmus pro řešení problému.
Program je vždy začíná A dokončí provedení v hlavanaprogramovat.
V podprogram naprogramovaný logicky kompletní část algoritmus.
Subgram se provádí pouze tehdy volání a po převedení kontroly provedení zadní.
Podprogramy usnadnit programování rozdělením algoritmu na části (strukturované programování).
Podprogramy vám umožňují vytvářet polotovary nejčastěji řešené typické problémy.
Standardní programové knihovny se skládají z rutin napsaných profesionály.
STRUKTURA FORTRAN - PROGRAMY
Obecná struktura hlavní (hlava) programy Fortran ( HLAVNÍ PROGRAM):
[ NAPROGRAMOVATnázev programu]
[ ! KOMENTÁŘE]
[ nespustitelné příkazy- reklamy]
[ spustitelné příkazy]
KONEC[ NAPROGRAMOVAT[název programu] ]
– VOLITELNÁ ČÁST STAVBY
TEXT, NA FOTOGRAFII ZDE ČERVENOU KURZÍVOU MÁ ZCELA URČITÝ VÝZNAM A JE NAPSÁNA V SOULADU S JAZYKOVÝMI POŽADAVKY
KONEC OPERÁTOR MUSÍ UKONČIT PROGRAM
Definice. Operátoři– posloupnost znaků, která určuje určité akce. Operátory se dělí na: spustitelné a nespustitelné.
Spustitelný operátoři určují akce s daty. Rozlišují se následující typy takových operátorů:
1. Operátoři zpracování informací.
Operátoři přiřazení
Operátory čtení (vstupu).
Operátory zápisu (výstupu).
2. Operátoři, kteří řídí chod programu v čase.
Nespustitelné příkazy slouží k popisu datového typu nebo nějakého programového prvku, takže se často nazývají popisné příkazy nebo jednoduše popisy nebo deklarace.
Komentáře jsou určeny pro lidi k dokumentaci programu a ke zlepšení porozumění algoritmu a operátorům.
Algoritmus lineární struktury
Algoritmus je lineární, pokud jsou provedeny všechny kroky algoritmu postupně v jejich přirozený řád Pro jakákoli zdrojová data, možné v tomto problému. V tomto případě jsou kroky algoritmu zaznamenávány postupně.
Zvažme možné akce v takových algoritmech (kroky algoritmu a odpovídající Fortran operátory).
Příkazy začátku a konce programu
První řádek programu je považován za začátek programu. V moderních verzích Fortranu je obvyklé formátovat program příkazem start programu, za kterým následuje název programu:
NAPROGRAMOVAT (název programu)
Název programu se obvykle volí tak, aby odrážel účel (obsah) programu. Například PRIMER, SUMMA atd.:
PROGRAMUJTE PRIMER_1! název programu PRIMER_1
VYHLEDÁVÁNÍ PROGRAMŮ! název programu označuje jeho obsah
Příkaz start programu není vyžadován, ale program musí končit příkazem program end - END (viz část „Struktura programu Fortran“). Ve Fortranu 90 každý příkaz obvykle zabírá samostatný řádek. Pokud je na řádku napsáno více příkazů, jsou odděleny středníkem " ; ».
I/O operátoři
Při provádění algoritmu je nutné, aby výchozí data úlohy měla k dispozici vykonávající, tzn. byly v paměti počítače. K tomu se často používá další krok algoritmu, který zahrnuje zadávání dat z externího vstupního zařízení (například klávesnice).
Uvažujme jednoduché zadávání dat z klávesnice, pro které se používá příkaz READ a pro zobrazení výsledků na obrazovce příkaz PRINT.
Obecný pohled na operátory a pravidla pro práci s nimi jsou uvedeny níže. Například musíte zadat hodnoty čtyř proměnných t, y, k a f:
ČÍST * , t, y, k, f! V seznamu vstupů jsou názvy proměnných odděleny čárkami
Takový operátor znamená zadávání čtyř proměnných hodnot postupně z klávesnice. Ve fázi provádění programu se hodnoty zadávají z klávesnice, musí být od sebe odděleny čárkami nebo mezerami nebo stisknutím klávesy ENTER. Dokud nebudou zadány všechny hodnoty ze seznamu, provádění programu bude zablokováno. Příklady zadávání hodnot:
0,56 -2,756 100 0,003! Čísla jsou oddělena mezerou popř
0,56, -2,756, 100, 0,003! Čísla se oddělují čárkou popř
0,56! Čísla se oddělují klávesou ENTER
V důsledku provedení vstupního příkazu je proměnná t dostane hodnotu 0,56, y získá hodnotu -2,756, k se bude rovnat 100 a F – 0,003. Ve vstupním seznamu můžete používat pouze názvy proměnných a konstant a zadávají se z klávesnice ve stejném pořadí, jak je uvedeno v operátoru.
Pro zobrazení výsledků poskytuje algoritmus speciální krok - výstup:
ZÁVĚR výstupní seznam
Zde výstupní seznam představuje v nejjednodušším případě seznam názvů proměnných, jejichž hodnoty by měly být vytištěny. Například,
Seznam výstupů může také obsahovat textové řetězce vysvětlující výsledek, například výstup ′q=′, q, ′ hmotnost m=′, m
V programu Fortran je tento krok algoritmu v nejjednodušším případě nahrazen operátorem
VYTISKNOUT * , výstupní seznam
Ve výstupním seznamu můžete kromě proměnných a konstant použít vysvětlující text, který je uzavřen v apostrofech nebo uvozovkách. Například je zadán operátor zobrazení
TISKNOUT *,’x=’,x,’ y=’,y
Nechť v důsledku provedení některých výpočtů programu x se rovnal 3,09 a y = 5,01. Poté se na obrazovce počítače objeví následující řádek:
Text převzatý do apostrofů ve výstupním příkazu se tedy vytiskne beze změn a místo názvů proměnných se zobrazí jejich hodnoty.
Je vyžadována přítomnost hvězdičky a čárky za slovem READ/PRINT! Hvězda * znamená, že hodnoty proměnných se zadávají/zobrazují na obrazovce „ve výchozím nastavení“ ve standardním tvaru zakódovaném ve Fortranu.
Výstupní seznam příkazu PRINT může obsahovat:
názvy proměnných,
řetězcové konstanty (zapsané v jednoduchých nebo dvojitých uvozovkách) pro vysvětlení výsledků a zobrazení textu,
aritmetické výrazy.
V tomto případě se nejprve vypočítá hodnota aritmetického výrazu a poté se vypočítaná hodnota zobrazí na obrazovce.
VYTISKNOUT *, Příklady:
VYTISKNOUT *, ″WWOD M,N″! zobrazování textových výzev k zadání
VYTISKNOUT *, z, y! Vypište pouze hodnoty proměnných z a y
″Z= ″, z, ″Y= ″, y! Zobrazení hodnot proměnných z a y s vysvětlením
VYTISKNOUT *, " Zjištění hodnoty druhé odmocniny čísla 2 s vysvětlením: " SQRT(2.0) =
, SQRT(2.0)
Každý výstupní příkaz vytváří jeden záznam.
U vysvětlujících textů (až 256 znaků dlouhých) je přiděleno tolik místa, jak je uvedeno ve znakové konstantě, text je přitlačen k levému okraji. Pro zlepšení vzhledu se proto doporučuje přidat na konec a začátek textu mezery.
Operátor přiřazení
Jedním z nejběžnějších kroků algoritmů v matematických úlohách jsou výpočty pomocí vzorců. Výsledky výpočtů pomocí vzorců mají často přiřazena vlastní označení (názvy proměnných), aby je bylo možné v budoucnu použít. = Pro zápis operace přiřazení budeme dále používat symbol
(nezaměňovat s pravidelným rovnítkem).
Operaci přiřazení také použijeme k explicitnímu nastavení počátečních hodnot veličin a opětovnému přiřazení hodnot.
Krok algoritmu, ve kterém jsou popsány výpočty pomocí vzorců nebo jsou explicitně specifikovány hodnoty, se nazývá přiřazení. V blokovém diagramu je takový krok algoritmu znázorněn pomocí bloku zpracování. V programu Fortran je nahrazen operátorem aritmetického přiřazení.
Operátor aritmetického přiřazení
Jedná se o spustitelný operátor, s jehož pomocí se provádějí výpočty pomocí vzorců, nastavují se počáteční hodnoty a hodnoty se „odesílají“ z jedné paměťové buňky do druhé (hodnoty jsou znovu přiřazeny). x = Celkový pohled na tohoto operátora:
AB, x Kde – název proměnné (jednoduchý nebo s indexy), - AB
aritmetický výraz (pravá strana vzorce), = přiřazovací znak.
1) Pro počítač je tento příkaz pokynem k provedení následujících akcí: vypočítat hodnota aritmetického výrazu ( AB)
2) na pravé straně operátora s aktuálními hodnotami proměnných v něm obsažených; přinést
3) hodnota výsledného výsledku k typu proměnné umístěné na pravé straně operátoru; proměnná umístěná na pravé straně operátoru je výsledná hodnota vypočítaná a převedená na typ proměnné.
Příklady
SKUTEČNÉ:: A=3,4, F=5,25, B=9,7
A=F! hodnota proměnné F je přiřazena proměnné A
J=B! hodnota proměnné B je přiřazena proměnné J
TISKNOUT*, “A=”,A”, F=”,F,” J=”,J ! zobrazení výsledků na obrazovce
A=5,25 F=5,25 J=9
INTEGER:: J=2, I
SKUTEČNÉ:: A=3,3, F=5,25, B
Proměnné B je přiřazen výsledek výpočtu! výraz J*A+F převedený na reálný typ
TISKNOUT*, “B=”, B ! zobrazení výsledku na obrazovce
Proměnné I je přiřazen výsledek výpočtu! výraz J*A+F převedený na celočíselný typ
TISKNOUT*, „já=“, já ! zobrazení výsledku na obrazovce
V důsledku spuštění programu uvidíme na obrazovce následující výsledek:
Podívejme se na příklady programů sestavených na základě lineárního algoritmu.
Pro hodnoty x=0,2, , , d = x + b.
Blokové schéma algoritmu:
Naprogramovat příklad 3:
T=(B*Z-SIN(Z)) / (Y+C*D*(Y*Z)**(1./7.))
TISK*,"T=",T
Vezměte prosím na vědomí, že v tomto programu jsou proměnné Z a Y dodatečně zavedeny, aby se ve vzorci pro nepočítaly opakované t výrazy. Navíc je zde operace umocňování nahrazena operací násobení, na kterou počítač stráví méně času než na umocňování. V zásadě můžete použít operaci umocňování a u malých programů to není podstatné. Pokud je však program složitý a obsahuje několik tisíc příkazů se složitými výpočty, pak se doporučuje tam, kde je to možné, nahradit operaci umocňování operací násobení, což sníží náklady na počítač a zvýší rychlost provádění programu.
Příklad 4. Napište program pro výpočet plochy kruhu vepsaného do trojúhelníku, poloměr , kde je obvod trojúhelníku.
Počáteční data úlohy jsou strany trojúhelníku a, b, c. Udělejte si vývojový diagram algoritmu sami.
Naprogramovat příklad 4:
program primer_4
parametr (pi=3,14159) !operátor pro nastavení konstant
tisk*, „Vvedite a, b, c“ ! zobrazení vysvětlujícího textu na obrazovce
číst*, a,b,c! zadávání délek stran trojúhelníku
p=a+b+c! výpočet obvodu trojúhelníku
r=sqrt((p – a)*(p – b)*(p – c))/p) ! výpočet poloměru, vepsané kružnice
s=pi*r**2! určení plochy kruhu
tisknout*,” s=”,s ! výstupní výsledek
Ve výše uvedeném příkladu je pojmenováno číslo π pí, protože ve Fortranu lze používat pouze latinská písmena.
Otázky k přednášce 3:
Jaká je struktura programu Fortran?
K čemu se používají podprogramy?
Co obsahuje hlavní program Fortran (MAIN)?
Nakreslete schematicky obecná struktura Fortran programy.
Co je podprogram?
Co je uloženo ve standardních programových knihovnách?
Definujte operátora.
Co jsou spustitelné příkazy?
Které operátory se nazývají nespustitelné?
Kteří operátoři jsou klasifikováni jako operátoři zpracování informací?
Proč jsou v programu potřebné komentáře?
Co se nazývá algoritmus lineární struktury?
Jaká sekvence akcí je typická pro program, který implementuje lineární algoritmus?
Jak se zapisuje příkaz start programu?
Je to vyžadováno?
Napište konec programového příkazu v obecném tvaru.
Je tento operátor vyžadován při psaní programu? K čemu slouží vstupní operátor? Jak se to správně píše? Jak to vypadá
celkový pohled
operátor displeje?
Proč se v I/O příkazech používá hvězdička *?
Jak můžete oddělit proměnné při zadávání jejich hodnot z klávesnice?
V jakém pořadí by měly být proměnné zadány?
Jaká data lze vypsat pomocí příkazu input?
Jaký je účel výstupního prohlášení?
Jak můžete zobrazit text na obrazovce počítače?
Zapište si operátor pro výstup dvou proměnných a=4,5, k=3.
Jak naformátovat operátor pro výstup dvou proměnných a=4,5, k=3 s vysvětlujícím textem?
Co je operátor přiřazení?
Co je operátor aritmetického přiřazení?
Zapište si obecný tvar operátoru přiřazení.
Jaké akce by měl počítač provést v důsledku operátoru přiřazení?
- Jaký typ je výsledná hodnota proměnné získaná jako výsledek vyhodnocení aritmetického výrazu?
Proč programy často nahrazují, kde je to možné, operaci umocňování operací násobení?
Překlad
Nevím, jak bude vypadat programovací jazyk v roce 2000, ale vím, že se bude jmenovat FORTRAN. - Charles Anthony Richard Hoare, c. 1982– tedy pro věci jako astrofyzikální modelování hvězd a galaxií (např. Flash), molekulární dynamika ve velkém měřítku, kódy počítání elektronových struktur (SIESTA), klimatické modely atd. V oblasti vysoce výkonných počítačů, jejichž podmnožinou je rozsáhlá numerická simulace, se dnes používají pouze dva jazyky: C/C++ a „moderní Fortran“ (Fortran 90/95/03/08). Pro tyto dva jazyky byly vyvinuty oblíbené otevřené knihovny MPI pro paralelizaci kódu. Obecně platí, že pokud potřebujete rychlý kód, který běží na více procesorech, máte pouze dvě možnosti. Moderní Fortran má funkci zvanou „coarray“, která umožňuje pracovat s paralelním programováním přímo v jazyce. Coarrays se objevily v rozšíření Fortran 95 a byly později zahrnuty do Fortran 2008.
Rozsáhlé používání Fortranu fyziky často mate počítačové vědce a další mimo obor, kteří mají pocit, že Fortran je historickým anachronismem.
Rád bych vysvětlil, proč je Fortran stále užitečný. Nedoporučuji studenty fyziky, aby se učili Fortran - protože většina z nich bude dělat výzkum, bylo by lepší, kdyby se učili C/C++ (nebo zůstali u Matlabu/Octave/Pythonu). Rád bych vysvětlil, proč se Fortran stále používá, a argumentoval, že to není jen proto, že fyzici jsou „za křivkou“ (i když někdy to tak je – loni jsem viděl studenta fyziky pracovat s kódem Fortran 77, ale ani on, ani jeho manažer o Fortranu 90 nic neslyšeli). Počítačoví vědci by měli považovat dominanci Fortranu v numerickém počítání za výzvu.
Než se ponoříme do tématu, chci probrat trochu historie, protože když lidé slyší slovo „Fortran“, okamžitě si vybaví děrné štítky a kódy s očíslovanými řádky. První specifikace Fortranu byla napsána v roce 1954. Raný Fortran (tehdy psaný velkými písmeny, FORTRAN) byl podle moderních standardů pekelný jazyk, ale byl to neuvěřitelný krok vpřed oproti předchozímu programování v assembleru. FORTRAN byl často programován pomocí děrných štítků, jak bez potěšení vzpomíná profesorka Miriam Foreman z univerzity Stony Brook. Fortran měl mnoho verzí, z nichž nejznámější jsou standardy 66, 77, 90, 95, 03 a 08.
Často se říká, že Fortran se kvůli své rychlosti používá dodnes. Ale je nejrychlejší? Stránka benchmarksgame.alioth.debian.org porovnává C a Fortran v několika testech mezi mnoha jazyky. Ve většině případů jsou nejrychlejší Fortran a C/C++. Programátorský oblíbený Python často zaostává v rychlosti až 100, ale to je pro interpretovaný kód rovnocenné. Python není vhodný pro složité numerické výpočty, ale je dobrý pro ostatní. Je zajímavé, že C/C++ překonává Fortran ve všech testech kromě dvou, i když celkově se výsledky liší jen málo. Testy, kde Fortran vítězí, jsou „nejfyzičtější“ - jedná se o simulaci systému n-těl a výpočet spektra. Výsledky závisí na počtu jader procesoru, například Fortran je na čtyřjádru mírně za C/C++. Testy, kde Fortran výrazně zaostává za C/C++, tráví většinu času čtením a zápisem dat a Fortran je v tomto ohledu notoricky pomalý.
C/C++ je tedy stejně rychlý jako Fortran a někdy i trochu rychlejší. Říkáme si: "Proč profesoři fyziky pořád říkají svým studentům, aby používali Fortran místo C/C++?"
Fortran má starší kód
Díky dlouhá historie Fortran, není divu, že jsou v něm napsány hory fyzikálního kódu. Fyzici se snaží minimalizovat čas programování, takže pokud najdou dřívější kód, použijí ho. I když je starý kód nečitelný, špatně zdokumentovaný a není nejefektivnější, je běžnější použít starý testovaný než psát nový. Úkolem fyziků není psát kód, snaží se pochopit podstatu reality. Profesoři mají na dosah ruky starší kód (často kód, který napsali před desítkami let) a předávají ho svým studentům. To jim šetří čas a odstraňuje nejistotu z procesu opravy chyb.Studenti fyziky považují Fortran za jednodušší na učení než C/C++
Myslím, že Fortran se učí snadněji než C/C++. Fortran 90 a C jsou velmi podobné, ale Fortran je jednodušší na psaní. C je relativně primitivní jazyk, takže fyzici, kteří si vybrali C/C++, se zabývají objektově orientovaným programováním. OOP může být užitečné, zejména ve velkých softwarových projektech, ale učení trvá mnohem déle. Musíte se naučit abstrakce, jako jsou třídy a dědičnost. Paradigma OOP se velmi liší od procedurálního paradigmatu používaného ve Fortranu. Fortran je založen na jednoduchém procedurálním paradigmatu, bližším tomu, co se děje pod kapotou počítače. Když optimalizujete/vektorizujete kód pro rychlost, je snazší pracovat s procedurálním paradigmatem. Fyzici obvykle rozumí tomu, jak počítače fungují, a myslí v pojmech fyzikální procesy, například přenos dat z disku do paměti RAM az paměti RAM do mezipaměti procesoru. Liší se od matematiků, kteří upřednostňují myšlení v pojmech abstraktních funkcí a logiky. Toto myšlení se také liší od objektově orientovaného myšlení. Optimalizace OOP kódu je z mého pohledu obtížnější než procedurální kód. Objekty jsou velmi objemné struktury ve srovnání s datovými strukturami, které fyzici preferují: pole.Snadnost na prvním místě: práce s Fortranem s poli
Pole nebo matice, jak je fyzici nazývají, jsou jádrem všech fyzikálních výpočtů. Ve Fortran 90+ můžete najít mnoho funkcí pro práci s nimi, podobně jako v APL a Matlabu/Octave. Pole lze kopírovat, násobit skalárem, násobit mezi sebou velmi intuitivním způsobem:A = B A = 3,24*B C = A*B B = exp(A) norma = sqrt(součet(A**2))
Zde jsou A, B, C pole nějakého rozměru (řekněme 10x10x10). C = A*B nám dává násobení matice po prvcích, pokud A a B mají stejnou velikost. Pro násobení matic použijte C = matmul(A,B). Téměř všechny interní funkce Fortranu (Sin(), Exp(), Abs(), Floor(), atd.) berou pole jako argumenty, což vede k jednoduchému a čistému kódu. V C/C++ prostě žádný podobný kód neexistuje. V základní implementaci C/C++ vyžaduje pouhé zkopírování pole spuštění cyklu for přes všechny prvky nebo volání funkce knihovny. Pokud vložíte pole do nesprávné funkce knihovny v C, dojde k chybě. Nutnost používat knihovny místo interních funkcí znamená, že výsledný kód nebude čistý, přenosný nebo snadno naučitelný.
Ve Fortranu funguje přístup k prvkům pole pomocí jednoduché syntaxe A, zatímco v C/C++ musíte napsat A[x][y][z]. Prvky pole začínají od 1, což odpovídá představám fyziků o maticích, a v polích C/C++ začíná číslování od nuly. Zde jsou některé další funkce pro práci s poli ve Fortranu.
A = (/ i, i = 1 100 /) B = A(1:100:10) C(10:) = B
Nejprve je vektor A vytvořen pomocí implikované smyčky do, známé také jako konstruktor pole. Potom se vytvoří vektor B, který se skládá z každého 10. prvku A, s použitím kroku 10. Nakonec se pole B zkopíruje do pole C, počínaje 10. prvkem. Fortran podporuje deklarace polí s nulovými nebo zápornými indexy:
Dvojitá přesnost, rozměr (-1:10) :: myArray
Negativní index zpočátku vypadá hloupě, ale slyšel jsem o jejich užitečnosti – představte si to například jako další oblast pro vysvětlení. Fortran také podporuje vektorové indexy. Můžete například předat prvky 1, 5 a 7 z pole N x 1 A do pole 3 x 1 B:
Indexy = (/ 1, 5, 7 /) B = A (dolní indexy)
Fortran podporuje masky polí ve všech vnitřní funkce. Pokud například potřebujeme vypočítat logaritmus všech prvků matice větších než nula, použijeme:
Log_of_A = log(A, maska= A .gt. 0)
Nebo můžeme resetovat všechny negativní prvky pole na nulu v jednom řádku:
Where(my_array .lt. 0.0) my_array = 0.0
Fortran usnadňuje dynamickou alokaci a dealokaci polí. Chcete-li například umístit dvourozměrné pole:
Skutečné, dimenze(:,:), alokovatelné:: název_pole alokovat(jméno_pole(xdim, ydim))
V C/C++ to vyžaduje následující záznam:
Int **pole; pole = malloc(nrows * sizeof(double *)); for(i = 0; i< nrows; i++){
array[i] = malloc(ncolumns * sizeof(double));
}
Chcete-li uvolnit pole ve Fortranu
Deallocate(name_of_array)
K tomu v C/C++
For(i = 0; i< nrows; i++){ free(array[i]); } free(array);
Snadnost dvě: není třeba se starat o ukazatele a alokaci paměti
V jazycích jako C/C++ jsou všechny proměnné předávány hodnotou, s výjimkou polí, která jsou předávána odkazem. Ale v mnoha případech dává předávání pole hodnotou větší smysl. Nechte například data sestávat z pozic 100 molekul různá obdobíčas. Potřebujeme analyzovat pohyb jedné molekuly. Vezmeme řez pole (subarray) odpovídající souřadnicím atomů v této molekule a předáme jej funkci. V něm se budeme zabývat komplexní analýzou přenášeného podpole. Pokud bychom to předávali odkazem, přenesená data by se nenacházela v paměti za sebou. Vzhledem k povaze přístupu do paměti by byla práce s takovým polem pomalá. Pokud jej předáme hodnotou, vytvoříme v paměti nové pole umístěné v řadě. K radosti fyziků se kompilátor stará o veškerou špinavou práci s optimalizací paměti.Ve Fortranu se proměnné obvykle předávají spíše odkazem než hodnotou. Kompilátor Fortranu pod kapotou automaticky optimalizuje jejich přenos pro efektivitu. Z pohledu profesora by se v otázce optimalizace paměti mělo více věřit kompilátoru než studentovi! V důsledku toho fyzici zřídka používají ukazatele, ačkoli jsou k dispozici ve Fortran-90+.
Několik dalších příkladů rozdílů mezi Fortran a C
Fortran má několik funkcí pro ovládání kompilátoru při hledání chyb a optimalizací. Chyby v kódu lze zachytit ve fázi kompilace, nikoli při provádění. Například libovolnou proměnnou lze deklarovat jako parametr, tedy konstantu.Dvojitá přesnost, parametr:: hbar = 6,63e-34
Pokud se změní parametr v kódu, kompilátor vrátí chybu. V C se tomu říká konst
Dvojitá konst hbar = 6,63e-34
Problém je v tom, že const real se liší od prostého reálného. Pokud funkce přijímající real přijme const real, vrátí chybu. Je snadné si představit, jak by to mohlo vést k problémům s interoperabilitou ve vašem kódu.
Fortran má také specifikaci záměru, která říká kompilátoru, zda argument předaný funkci je vstupní argument, výstupní argument nebo jak vstupní, tak výstupní argument. To pomáhá kompilátoru optimalizovat kód a zvyšuje jeho čitelnost a spolehlivost.
Fortran má další funkce, které se používají různé frekvence. Například ve Fortranu 95 je možné deklarovat funkce s modifikátorem pure. Taková funkce nemá žádné vedlejší účinky – pouze mění své argumenty a nemění globální proměnné. Speciálním případem takové funkce je elementární funkce, která přijímá a vrací skaláry. Používá se ke zpracování prvků pole. Vědět, že funkce je čistá nebo elementární, umožňuje kompilátoru provádět další optimalizace, zejména při paralelizaci kódu.
Co očekávat v budoucnu?
Ve vědeckých výpočtech zůstává Fortran hlavním jazykem a v dohledné době nezmizí. V průzkumu mezi návštěvníky Supercomputing Convention v roce 2014, kteří používají tento jazyk, 100 % z nich uvedlo, že jej budou používat v příštích 5 letech. Průzkum také ukazuje, že 90 % používalo směs Fortranu a C. Tvůrci specifikace Fortran 2015 předpokládali nárůst míchání těchto jazyků a zahrnuli více funkcí pro interoperabilitu kódu. Fortran kód je stále častěji volán z kódu Pythonu. Co počítačoví vědci kritizují za použití Fortranu, si neuvědomují, že jazyk zůstává jedinečně vhodný pro to, po čem byl pojmenován – FORmula TRANslation, překlad vzorce, tedy transformaci. fyzikální vzorce do kódu. Mnoho z nich si neuvědomuje, že jazyk se vyvíjí a neustále obsahuje nové funkce.Nazývat moderní Fortran 90+ starým je jako nazývat C++ starým, vzhledem k tomu, že C bylo vyvinuto v roce 1973. Na druhou stranu i nejnovější standard Fortran 2008 je zpětně kompatibilní s Fortran 77 a většinou Fortran 66. Proto vývoj jazyka je zatížena určitými obtížemi. Nedávno se výzkumníci z MIT rozhodli překonat tyto obtíže vyvinutím jazyka HPC od nuly nazvaného Julia, který byl poprvé uveden na trh v roce 2012. Zda Julia zaujme místo Fortrana, se teprve uvidí. V každém případě tuším, že se to bude dít ještě hodně dlouho.
Štítky:
- fortran
- vědecké programování
Ministerstvo školství a vědy Ruská federace
Uralská federální univerzita
pojmenovaný po prvním ruském prezidentovi
ZÁKLADY PROGRAMOVÁNÍ
VE FORTRANU
Konzultace
Jekatěrinburg
Zavedení. 3
Historické informace. 5
Struktura programu... 8
Rozdíly mezi Fortranem 90 a Fortranem 77. 11
Přístup k výpočetním zdrojům. 15
Spouštění úloh v clusteru. 17
Přepište texty programů na serveru. 17
Kompilace programů. 17
Spuštění programu na účtu. 19
Datové typy. 22
Celá konstanta. 22
Skutečná konstanta. 23
Skutečná konstanta s dvojnásobnou přesností. 23
Komplexní konstanta. 23
Komplexní konstanta s dvojitou přesností. 24
Logická konstanta. 24
Textová konstanta. 24
Operátory popisu datových typů. 26
INTEGER celočíselného typu. 26
SKUTEČNÁ a DVOJNÁSOBNÁ PŘESNOST skutečného typu. 27
KOMPLEXNÍ a DVOJKOMPLEXNÍ komplexní typ. 28
CHARACTER je typ postavy. 29
LOGICAL je logický typ. 29
DIMENZE polí. 30
Atribut PARAMETR.. 32
Různé vestavěné datové typy. 35
Výrazy, operace a přiřazení. 36
Aritmetické výrazy. 36
Projevy postoje. 37
Logické výrazy. 38
Pravidla pro hodnocení výrazů. 38
I/O operátory. 39
Vstupní operátor DATA.. 39
Vstupní příkaz ČTĚTE.. 40
Výstupní příkaz WRITE. 41
Operátor zobrazení PRINT. 42
I/O Format Statement (FORMAT) 43
Specifikace X, T. 43
Specifikátor I 44
Separátory. 45
Specifikace F.46
Opakovače. 49
Specifikace E.50
Specifikace G..51
Datové deskriptory. 52
Podmíněné operátory. 53
Operátor logické podmínky. 53
Operátor aritmetických podmínek. 57
Konstrukce SELECT CASE. 60
Operátoři smyčky. 62
Operátor smyčky DO.. 62
Operátor smyčky DO WHILE. 64
Zastavit operátor STOP. 65
Operátor výstupu smyčky EXIT. 66
Přechodní operátoři. 67
Operátor přechodu sběrnicového slova GOTO.. 67
Vypočítaný skokový operátor GOTO.. 67
Operátor podmíněného skoku IF … GOTO.. 68
Práce s poli. 69
Zadávání polí. 69
Výstup z polí. 71
Zpracování polí. 73
Podprogramy.. 76
Operátor-funkce. 78
Funkce podprogramu FUNKCE.. 81
Podprocedura PODPROGRAM. 83
Práce s externími soubory. 85
Operátor otevírání souboru OPEN.. 85
Operátor uzavření souboru CLOSE. 86
Příklady práce se soubory. 86
Literatura. 89
Zavedení
Charakteristickým rysem paralelních počítačů je možnost současného využití pro zpracování informací velký počet procesory. Aplikace multiprocesoru výpočetní systémy(MVS) představuje dva problémy konstrukce paralelních algoritmů: paralelizaci existujících sekvenčních algoritmů a vytváření nových algoritmů se zaměřením na paralelní výpočetní systémy.
Nejběžnější programovací technologií pro paralelní počítače s distribuovanou pamětí je dnes MPI. Hlavním způsobem interakce paralelních procesů v takových systémech je vzájemné předávání zpráv. To se odráží i v názvu této technologie – Message Passing Interface. Standard MPI definuje rozhraní, kterým se musí řídit jak programovací systém na každé výpočetní platformě, tak uživatel při vytváření svých programů. Komunikační knihovna MPI se stala obecně uznávaným standardem v paralelním programování využívajícím mechanismus předávání zpráv.
Program MPI je kolekce nezávislých procesů, z nichž každý provádí svůj vlastní program (ne nutně stejný), napsaný v jazyce C nebo FORTRAN Ve FORTRAN je většina procedur MPI podprogramy (nazývané pomocí příkazu CALL) a chyba kód je vrácen prostřednictvím dalšího posledního parametru procedury. Několik procedur napsaných jako funkce nevrací kód chyby. Neexistuje žádný požadavek na striktní dodržování velikosti písmen ve jménech podprogramů a pojmenovaných konstant. Pole jsou indexována s 1. Objekty MPI, což jsou struktury v C, jsou ve FORTRANu reprezentovány jako celočíselná pole.
IMM je naprogramován ve Fortranu. Hlavní problém při jeho použití pro velké úkoly je koordinace vzájemného působení částí velký úkol. Fortran 90 obsahuje mechanismy pro interakci objektů v souladu s technologií objektově orientovaného programování, které usnadňují kolektivní práci velký projekt. Jedná se o moduly pro návrh knihoven, struktur a odvozených datových typů pro organizaci složitých dat, dynamickou alokaci paměti, ale i řadu mechanismů pro zpracování polí včetně tvorby různých řezů (sekcí). Schopnost kombinovat v jedné rodině (rodu) standardní postupy zpracování, které se liší typy svých argumentů, může být užitečným nástrojem v řadě úloh. Druhy (rodiny) datových typů vám umožňují snadno přizpůsobit implementaci typu na základě vlastností hardwaru (například typ INTEGER lze deklarovat jako dlouhý nebo krátký prostřednictvím ovládacího prvku typu KIND). Některá pravidla stylu mohou pomoci vývoji, například deklarování vstupních, výstupních a měnitelných parametrů procedury pomáhá najít chyby v interakci programových jednotek. Pravidla pro záznam vlastností dat, komentářů a dalších prvků usnadňují čtení psaných programů, což urychluje vyhledávání chyb.
Historické pozadí
1954 – IBM, první jazykový překladatel Fortran.
1958 – FortranII.
1962 – FortranIV.
1966 – Fortran 66.
1978 – Fortran 77.
Byla nazvána modifikace jazyka Fortran, která se objevila v roce 1958 FortranII a obsahoval koncept podprogramu a společných proměnných pro zajištění komunikace mezi segmenty.
V roce 1962 se objevil jazyk známý jako Fortran IV. V roce 1966 byl dokončen vývoj amerického standardu pro jazyk ANSI (American National Standards Institute) jazyk se nazývá; Fortran 66. V roce 1978 byla vyvinuta druhá verze standardu ANSI – jazyk Fortran 77, včetně prvků strukturovaného programování, například strukturované IF, typy znaků.
Třetí verze standardu ANSI je Fortran 90, realizované v roce 1991. Fortran 90 je vývoj jazyka Fortran 77, tedy program napsaný v Fortran 77, lze zkompilovat a spustit jako program na Fortran 90. Norma Standard Fortran 90 zavádí mnoho nových funkcí pro operace s poli, nové metody přesné specifikace, bezplatný formát zdrojového kódu, rekurze, dynamická pole atd.
Programy v aktuálním standardním jazyce Fortran 77 lze úspěšně zkompilovat kompilátory Fortran 90 bez jakýchkoliv změn. Nicméně, struktura programu v jazyce Fortran 90 se může výrazně lišit od struktury ekvivalentního programu Fortran 77. Programátor si musí dát pozor na míchání těchto dvou stylů.
Ve stejném rozsahu kompilátor s Fortran 90 vyžaduje, aby byla poskytnuta vysvětlení pro vykazování určitých kódů nekonzistence (nekonzistence), tj. použití operátorů nebo proměnných, které jsou povoleny nad rámec souboru pravidel, která nespadají do oblasti působnosti normy.
Fortran zaujímá přední místo mezi moderními programovacími jazyky. Je to jeden z prvních programovacích jazyků vysoká úroveň a od samého počátku byl určen k řešení složitých počítačových problémů. Mezi aplikačními programátory se Fortran zpočátku setkával se skepsí, protože se věřilo, že cena za pohodlí programování ve vysokoúrovňovém jazyce by přišla za cenu značné ztráty rychlosti výpočtu. Když už je řeč o modelingu složité procesy nebo zpracování velkého množství informací je výpočetní rychlost rozhodujícím faktorem určujícím volbu jazyka, výpočetní platformy a programovací technologie.
Mezi vědci například existuje rčení, že každý matematický problém již má řešení ve Fortranu, a skutečně mezi tisíci balíčků Fortran můžete najít balíček pro násobení matic, balíček pro řešení složitých integrálních rovnic a mnohé, mnoho dalších. Řada takových balíčků byla vytvořena v průběhu desetiletí a jsou stále populární ve vědecké komunitě dodnes, například - IMSL ( angličtina).
Většina z těchto knihoven je vlastně majetkem lidstva: jsou dostupné ve zdrojovém kódu, dobře zdokumentované, odladěné a velmi efektivní. Proto je drahé je měnit, natož přepisovat do jiných programovacích jazyků, přestože se pravidelně objevují pokusy o automatickou konverzi FORTRAN kódu do moderních programovacích jazyků.
Moderní Fortran (Fortran 95 a Fortran 2003) získal vlastnosti nezbytné pro efektivní programování pro nové výpočetní architektury a umožňuje použití moderní technologie programování, zejména OOP.
Vývoj jazykových norem
Fortran je vysoce standardizovaný jazyk, a proto je snadno přenositelný na různé platformy. Nové jazykové standardy do značné míry zachovávají kontinuitu se staršími, což umožňuje používat kódy z dříve napsaných programů a upravovat je.
FORTRAN 66 (1972) Na základě standardu IBM FORTRAN IV FORTRAN 77 (1980) Bylo zavedeno mnoho vylepšení: Fortran 90 (1991) Jazyková norma byla významně revidována. Fortran 95 (1997) Oprava předchozího standardu. Byl zaveden operátor a konstrukce FORALL, která umožňuje větší flexibilitu než operátor a konstrukce WHERE pro přiřazování polí a nahrazování těžkopádných smyček. FORALL umožňuje nahradit jakékoli přiřazení oddílu nebo klauzuli WHERE, zejména poskytuje přístup k diagonále matice. Tento operátor je považován za slibný v paralelním počítání, protože usnadňuje paralelizaci efektivnější než smyčky. Fortran 2003 (2004) Další vývoj Podpora OOP v jazyce. Interakce s operačním systémem. Byly také přidány následující funkce:
Fortran 2008 (2010) Norma předpokládá podporu prostřednictvím paralelního výpočetního jazyka (Co-Arrays Fortran). Plánuje se také zvýšení maximálního rozměru polí na 15, přidání vestavěných speciálních matematických funkcí atd.
GNU Free Software Foundation vytvořila open-source kompilátor Fortran-77, g77, dostupný prakticky pro jakoukoli platformu a plně kompatibilní s GCC. Nyní jej nahradil kompilátor GFortran, který implementuje téměř všechny konstrukty standardu Fortran 95 a mnoho konstruktů standardů Fortran 2003 a Fortran 2008. Je také plně zpětně kompatibilní s Fortran 77. Existuje také nezávislý projekt nazvaný g95 pro vytvoření kompilátoru Fortran-95 založeného na GCC.
Vlastnosti a struktura programu
Fortran má poměrně velkou sadu vestavěných matematických funkcí a podporuje práci s celými, reálnými a komplexními čísly s vysokou přesností. Expresivní prostředky jazyky byly zpočátku velmi chudé, protože Fortran byl jedním z prvních jazyků na vysoké úrovni. Následně bylo do Fortranu přidáno mnoho lexikálních struktur charakteristických pro strukturální, funkční a dokonce objektově orientované programování.
Děrný štítek s označením sloupců pro Fortran.
Struktura programů byla zpočátku zaměřena na vstup z děrných štítků a měla řadu vlastností vhodných pro tento konkrétní případ. 1. sloupec tedy sloužil k označení textu jako komentáře (se symbolem C), od 1. do 5. místa se nacházela oblast štítku a od 7. do 72. byl umístěn skutečný text operátora nebo komentáře. Sloupce 73 až 80 bylo možné použít k očíslování karet (k obnovení náhodně rozházeného balíčku) nebo je překladatel ignoroval. Pokud se text operátora nevešel do přiděleného prostoru (od 7. do 72. sloupce), byl do 6. sloupce další karty umístěn znak pokračování a poté na něm operátor pokračoval. Nebylo možné umístit dva nebo více výroků na jeden řádek (mapu). Když se děrné štítky staly historií, tyto výhody se změnily ve vážné nepříjemnosti.
Proto se ve standardu Fortran, počínaje Fortranem 90, kromě pevného formátu zdrojového textu objevil i volný formát, který nereguluje pozice řádků a navíc umožňuje psát více operátorů na řádek. Zavedení volného formátu umožnilo vytvořit kód, jehož čitelnost a srozumitelnost není horší než kód vytvořený pomocí jiných moderních programovacích jazyků, jako je Java.
druh " vizitka»starý Fortran je obrovské množstvíštítky, které byly použity jak v nepodmíněných příkazech GOTO, tak v příkazech smyčky a v příkazech vstupní/výstupní deklarace formátu FORMAT. Velké množství štítků a příkazů GOTO často ztěžovalo pochopení programů Fortran.
Právě tato negativní zkušenost se stala důvodem, proč jsou v řadě moderních programovacích jazyků (například Java) značně modifikovány štítky a související operátory nepodmíněných skoků.
Moderní Fortran se však přemíry štítků zbavuje zavedením operátorů jako DO ... END DO, DO WHILE, SELECT CASE. Moderní jazykové standardy navíc zachovávají pouze klasický operátor GOTO, který se v mnoha jazycích používá dodnes. Byl eliminován počítaný příkaz GOTO a také konstrukt ENTRY - vícenásobný vstup do procedur.
Také k pozitivní vlastnosti Moderní Fortran se vyznačuje velkým množstvím vestavěných operací s poli a flexibilní podporou polí s neobvyklým indexováním. Příklad:
Skutečná ,rozměr (: ,: ) :: V ... alokovat (V(- 2 : 2 ,0 : 10 ) ) ! Přidělte paměť pro pole, jehož indexy mohou ! měnit od -2 do 2 (první index) ! a od 0 do 10 sekund... V (2,2 : 3 ) = V (- 1 : 0,1 ) ! Otočte kus pole napište(*,*) V(1,:) ! Vytiskněte všechny prvky pole V, jehož první index je 1. uvolnit (V)
Ahoj světe!
Pevný formát (mezery na řádcích 1 až 6 jsou označeny znaky „␣“):
␣␣␣␣␣␣PROGRAM ahoj ␣␣␣␣␣␣PRINT* , "Ahoj světe!"
␣␣␣␣␣␣KONEC
Volný formát:
Program hello print * , "Ahoj, světe!"
- konec
- Poznámky.
Příkaz PROGRAM je volitelný. Přísně vzato, jediným požadovaným příkazem v programu Fortran je příkaz END.
Mnoho programovacích systémů umožňuje kombinovat objektové soubory získané jako výsledek překladu programu Fortran s objektovými soubory získanými z kompilátorů z jiných jazyků, což umožňuje vytvářet flexibilnější a na funkce bohatší aplikace. Pro jazyk Fortran je k dispozici také velké množství knihoven, které obsahují jak rutiny pro řešení klasických výpočetních problémů (LAPACK, IMSL, BLAS), tak problémy s organizací distribuovaného počítání (MPI, pvm) a úlohy pro konstrukci grafických rozhraní (Quickwin, FORTRAN/ TK) nebo přístup k DBMS (Oracle).
Fortran v SSSR
Poznámky
- Viz například: Úložiště Netlib na UTK a ORNL
- A. M. Gorelík. Evoluce programovacího jazyka Fortran (1957-2007) a perspektivy jeho rozvoje // Computational methods and programming, 2008, Vol 9, str. 53-71
- Bartenyev O.V. Moderní Fortran. - M.: Dialog MEPhI, 2005. - ISBN 5-86404-113-0
- A. M. Gorelík. objektově orientované programování v moderním Fortranu
- S. D. Algazin, V. V. Kondratiev. Programování ve Visual Fortran. - M.: “Dialog MEPhI”, 2008. - 448 s. - ISBN 5-8243-0759-8
- Zprávy Gorelik A. M
- VS FORTRAN
- XL Fortran pro Linux
- Absoft Pro Fortran Compiler Suites Obecný přehled
- Sun Studio – benchmarky
- Esej Alexandra Rastorgueva o vzhledu Fortranu v Dubně
- Historie počítačové grafiky v Rusku
Literatura
- Fortran. Programmer's Reference Manual The Fortran Automatic Coding System for IBM 704 EDPM - IBM Corp., 1956. - 51 p.
- ISO/IEC 1539-2:2000 Informační technologie - Programovací jazyky - Fortran - Část 2: Řetězce znaků různé délky
- Robert W. Šebesta. 2.3. Počítač IBM 704 a jazyk Fortran // Základní pojmy programovacích jazyků = Concepts of Programming Languages / Transl. z angličtiny - 5. vyd. - M.: Williams, 2001. - s. 63-69. - 672 s - 5000 výtisků.
- ISBN 5-8459-0192-8 (ruština), ISBN 0-201-75295-6 (anglicky)
- Odkazy
- gfortran - Fortran 95/2003/2008 kompilátor, součást GNU Compiler Collection
in Progopedia - encyklopedie programovacích jazyků (ruština) |
---|