Ohjelmointi

Ole utelias ja opi: Moderni Fortran pähkinänkuoressa

Tieteen ja tekniikan kehitys luottaa edelleen Fortraniin enemmän kuin mihin tahansa muuhun kieleen monilla tärkeillä toimenpiteillä. Yllättynyt? Sinun ei pitäisi olla, vaikka monet itsensä ohjelmoijiksi kutsuvat ihmiset eivät ole koskaan oppineet Fortrania. Opetan sinulle Fortranin viidessä minuutissa tai vähemmän. Se ei satuta, ja tiedät mikä on kaikkien aikojen tärkein ja vaikutusvaltaisin ohjelmointikieli.

Tietokonetieteilijät saattavat käyttäytyä kuin Fortrania ei ole, mutta populaarikulttuuri (Simpsonit, Kausi 26, jakso 10) sujui paremmin viisaalla havainnolla: "Fortran, suurin ohjelmointikielistä!" Itse asiassa yli puolet maailman tehokkaimpien tietokoneiden suorittamista laskelmista tulee Fortranista. Joissakin suurissa järjestelmissä Fortran-koodi voi olla vastuussa 80-100% laskennasta.

Se on myös uskomattoman helppo oppia, kuten näet tästä lyhyestä johdannosta Fortran-ohjelmointiin. Oletan, että osaat jo ohjelmoida johonkin muuhun kuin Fortraniin (jos olet täysin uusi ohjelmoinnissa, suosittelen Fortranin oppimista “A Fortran -värikirjan” avulla).

 Aloitetaan

 ohjelma hei

tulosta *, "Hei, maailma!"

lopeta ohjelma hei

Kirjoita (käytä tiedostoon .f95 tai .f90 laajennusta), käännä, suorita tämä ja se tulostaa "Hello, World!". Painetun lauseen "*" tarkoittaa olennaisesti muotoilla automaattisesti.

Toinen esimerkkini tekee matematiikkaa ja lopettaa lauseilla if / then / else:

ohjelman sympatia

implisiittinen mikään

todellinen :: vastaus, x, y, summa, prod, cubedx, cubedy

tulosta *, 'Kirjoita kaksi numeroa (x ja y)'

lue *, x

lue *, y

summa = x + y

prod = x * y

kuutio = x ** 3;

cubedy = y ** 3;

tulosta *, 'Summa x + y on', summa

print *, 'Tuote x * y is', tuot

tulosta *, 'Cubed x ja y', cubedx, cubedy

tulosta *, 'x: n ja y: n sini', sin (x), sin (y)

jos (x> y) sitten

tulosta *, 'Huomasin, että x on suurempi kuin y'

muu

tulosta *, 'Vaikuttaa siltä, ​​että y ei ole pienempi kuin x'

loppu Jos

lopettaa ohjelman sympatia

Saatat huomata, että liukastuin kohtaan "implisiittinen ei mitään". Se on normaalia nykyaikaisessa Fortranissa - se kehottaa kääntäjää vaatimaan muuttujien nimenomaisen ilmoituksen, jotta tuntemattomat muuttujat merkitään virheiksi. Ilman sitä Fortran olettaa, että muuttujat, jotka alkavat i: stä n: ään (kokonaisluvun kaksi ensimmäistä kirjainta), ovat kokonaislukuja, ja muut ovat liukulukuisia ("todellisia"). Se vähensi sitä, kuinka monta korttia meidän oli nyrkkeiltävä vuosikymmeniä sitten, mutta yleensä paheksutaan nykypäivänä.

Tämän ohjelman suorittaminen (ja kirjoittaminen 3.14 ja 1.57) tuottaa seuraavat:

Kirjoita kaksi numeroa (x ja y)

3.14

1.57

Summa x + y on 4,71000004

Tulo x * y on 4,92980051

Cubed x ja y 30,9591484 3,86989355

x: n ja y: n sini 1,59254798E-03 0,999999702

Huomasin, että x on suurempi kuin y

Fortran on suunniteltu matematiikkaan (FORmula TRANslation). Huomaa, että "sin (…)" on sisäänrakennettu ilman tarvetta sisällyttää otsakkeita tai paketteja. Tietenkin Fortran tukee liukuluku- ja kokonaislukuja, mutta tukee myös kompleksilukuja. Ei lisäaineita.

Kolmas esimerkkini koskee silmukoita (joita kutsutaan "do" Fortranissa):

ohjelman silmukka

implisiittinen mikään

kokonaisluku :: i, j, pidä (100,2), w

w = 0

do i = 10, 50, 5

tee j = i, 20, 5

tulosta *, i, j

w = w + 1

pidä (w, 1) = i

pidä (w, 2) = j

loppu tehdä

loppu tehdä

do i = 1, w

tulosta *, 'säilytä:', säilytä (i, 1), säilytä (i, 2)

loppu tehdä

lopettaa ohjelman silmukka

Esimerkkiohjelmani tulostusrivi suoritetaan vain, jos j-silmukka suoritetaan. J-silmukka ei toimi lainkaan, kun ylitän 20. Tämä esimerkki tuo myös käyttöön taulukot, joissa käytetään 'pidä' -taulukkoa. Fortran aloittaa taulukon numeroinnin nollan sijasta '1', mikä on samalla tavalla kuin amerikkalaiset rakentavat kerroksia (kerros # 2 viittaa pohjakerrokseen, jonka oletetaan olevan '1'). Muut paikat maailmassa käyttävät rakennuksiinsa nollapohjaista numerointia (amerikkalaiset kutsuvat "toista kerrosta" ensimmäiseksi kerrokseksi), kuten C ja C ++, tekevät matriiseille. Kyseisen ohjelmasilmukan tulos on esitetty alla:

           10          10

          10          15

          10          20

          15          15

          15          20

          20          20

säilytä: 10 10

säilytä: 10 15

säilytä: 10 20

säilytä: 15 15

säilytä: 15 20

säilytä: 20 20

Viimeisessä esimerkissä määritän aliohjelman (funktion) nimeltä ave, jotta saadaan kolmen staattisesti määrittämäni luvun keskiarvo. Huomaat, että olen laiska ja kirjoitin vain "loppu" ohjelman ja toiminnon jälkeen. Se on okei, mutta jos käytät nimiä, kuten aiemmin, kääntäjä auttaa tarkistamaan, että loppu vastaa haluamaasi nimeä.

Ohjelma callret

implisiittinen mikään

todellinen a, b, c

todellinen av, avsq1, avsq2

todellinen ave

data a, b, c / 5,0,2,0,3,0 /

av = ave (a, b, c)

tulosta *, ', keskiarvo', a, b, c, 'on:', AV

loppuun

todellinen funktio ave (x, y, z)

todellinen x, y, z, summa

summa = x + y + z

ave = summa / 3,0

palata

loppuun

Tämä tulostaa:

Keskimääräinen arvo 5.00000000 2.00000000 3.00000000 on: 3.33333325

Kyllä, Fortran voi muotoilla tuotoksen. Jos korvataan yllä oleva "tulosta" seuraavasti:

Tulosta 8, 'Keskiarvo', a, b, c, 'on', AV

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

Tulokseksi tulee:

Keskiarvo 5.00, 2.00, 3.00 on 3.33333

Fortran-muotoilu voidaan tehdä myös yhdellä rivillä, ja sillä on sama kaunis tulos:

tulosta "(a, 2 (f4.2, ','), f4.2, a, f7.5)", 'Keskiarvo', a, b, c, 'on', AV

Jos sinut on johdettu uskomaan, että Fortran on outo, sinut johdettiin harhaan. Kirjoitin kaikki nämä esimerkit Fortranin ohjelmoijien kutsumaksi "vapaaksi muodoksi". Siitä tuli virallisesti osa Fortrania Fortran 90 -standardin kanssa (tästä syystä ohjeeni käyttää .f90 tai .f95 tiedostotunnisteina; nämä kertovat kääntäjälle ilman erityisiä ohjeita valintakytkimet, että käytämme vapaata muotoa). Muista, että vuonna 1956 käyttäjät halusivat jotain korttilävistyksiä varten. Voisin jatkaa tuntikausia siitä, kuinka Fortran sopeutuu tähän sarakekohtaisilla muodoilla ja jatkosmerkeillä jne. Mutta kuten olen osoittanut, sinun ei todellakaan tarvitse oppia sitä Fortran-koodin kirjoittamiseen tai lukemiseen.

Joten miksi tietojenkäsittelytietäjät välttävät Fortrania? Suuri kysymys. Fortran on vanhin kieli (noin 1956). Se alkoi nauhojen, rei'itettyjen korttien ja ihmisen tietokoneiden korvaamisen aikakaudella. Se edeltää lohkon jäsenneltyä ohjelmointia, jäsentämisteoriaa ja grafiikkaa. Matkan varrella atk-tutkijat tutkivat tietojenkäsittelyn edistymistä ja esittivät tuhansia ohjelmointikieliä, joista suurin osa ei onnistunut. Siitä huolimatta, kaikilla inhimillisen toiminnan aloilla on muodikasta ”vanhan kanssa, uuden kanssa”. Tietojenkäsittelytiede ei ole eroa.

Mutta kun numeromurskaus on tärkeää, mikään ei ole parempaa tai helpompaa kuin Fortran. Ehdotan, että meidän kaikkien tulisi tietää paljon työkaluja ja käyttää parasta työkalua työhön. Se, että luotettava vasarani on ollut työkalupakkissani pitkään, ei tarkoita sitä, etten tarvitse sitä oikeaan työhön. Fortran ei ole erilainen.

Fortran ei ole vain alkuperäinen korkean tason ohjelmointikieli, se on elävä, tärkeä ja laajalti käytetty. Kuka aloitti huhut ehdottaa toisin?

 Resurssit

  • Intel Fortran - käytetään voimakkaasti x86 (Intel / AMD) -laitteisiin, korkea suorituskyky
    • Voit saada ilmaisen kääntäjän (ja muiden työkalujen) käyttöoikeuden
    • Kokeilukopioita, joista voi ostaa myöhemmin
    • Vuoden 2018 beeta kestää heinäkuuhun 2018: kokeile tätä uusinta ja suurinta täysin toimivaa betaa, mukaan lukien Fortran ja siihen liittyvät työkalut, ilmaiseksi siihen asti: Intel Parallel Studio XE 2018 Beta - Liity nyt
  • GNU Fortran - laajempi tuki (monet prosessorit, monet järjestelmät), heikompi suorituskyky
    • avoimen lähdekoodin ja ilmainen
    • MacBook Airilla ... Minulla oli vain sanoa "brew install gcc" ja saan gfortranin ilmaiseksi

Napsauta tätä ja lataa ilmainen 30 päivän Intel Parallel Studio XE -kokeilujakso

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