Бъдете любопитни и научете: Модерен Fortran накратко

Напредъкът в науката и инженерството все още разчита на Fortran повече от всеки друг език чрез много важни мерки. Изненадан? Не бива да бъдете, въпреки че много хора, които се наричат ​​програмисти, всъщност никога не са учили Fortran. Ще ви науча Fortran след пет минути или по-малко. Няма да навреди и ще разберете кой е може би най-важният и влиятелен език за програмиране някога.

Компютърните учени може да се държат така, сякаш Fortran не съществува, но популярната култура ( The Simpsons , Season 26, Episode 10) се справи по-добре с мъдрото наблюдение: „Fortran, най-великият от програмните езици!“ Всъщност повече от половината изчисления направено от най-мощните компютри в света идва от Fortran. В някои големи системи кодът на Fortran може да бъде отговорен за 80-100% от изчисленията.

Освен това е невероятно лесно да се научи, както ще видите с това кратко въведение в програмирането на Fortran. Предполагам, че вече знаете как да програмирате в нещо различно от Fortran (ако сте напълно нов в програмирането, горещо препоръчвам да научите Fortran с „Книжка за оцветяване на Fortran“).

 Да започваме

 програма здравей

    print *, "Здравей, Свят!"

край програма здравей

Въведете (използвайте разширение .f95 или .f90 за вашия файл), компилирайте, стартирайте това и то отпечатва „Здравей, Свят!“. „*“ В отпечатването по същество означава автоматично форматиране .

Вторият ми пример прави математика и завършва с изрази 'if / then / else':

програма mymath

  имплицитно няма

  реално :: отговор, x, y, сума, prod, cubedx, cubedy

  print *, 'Въведете две числа (x и y)'

  прочетете *, x                                          

  готов                                          

  сума = x + y  

  prod = x * y                                       

  cubedx = x ** 3;

  кубичен = y ** 3;

  print *, 'Сумата x + y е', сума

  print *, 'Продуктът x * y е', прод

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

  print *, 'синус от х и у', sin (x), sin (y)

  ако (x> y) тогава

    print *, „Забелязах, че x е по-голямо от y“

  друго

    print *, 'Изглежда, че y не е по-малко от x'

  край ако

край на програмата mymath  

Може да забележите, че аз се подхлъзнах в „неявно нищо“ Това е нормално в съвременния Fortran - той казва на компилатора да изисква променливите да бъдат изрично декларирани, така че неизвестните променливи да бъдат маркирани като грешки. Без него Fortran приема, че променливите, започващи с 'i' до 'n' (първите две букви от цяло число), са цели числа, а други са числа с плаваща запетая ('реални'). Това намали колко карти трябваше да пробием преди десетилетия, но в днешно време обикновено се мрази.

 Изпълнението на тази програма (и въвеждането в 3.14 и 1.57) дава следното:

Въведете две числа (x и y)

3.14

1.57

 Сумата x + y е 4.71000004   

 Продуктът x * y е 4.92980051   

 На кубчета x и y 30.9591484 3.86989355   

 синус на х и у 1.59254798E-03 0.999999702

 Забелязах, че x е по-голямо от y   

Fortran е предназначен за математика (FORmula TRANSlation), имайте предвид, че “sin (...)” е вграден, без да е необходимо да включва заглавка или пакет. Разбира се, Fortran поддържа числа с плаваща запетая и цели числа, но също така поддържа и сложни числа. Не са необходими добавки.

Третият ми пример включва цикли (наречени „do“ във Fortran):

 програмен цикъл

  имплицитно няма    

  цяло число :: i, j, keep (100,2), w

  w = 0

  правя i = 10, 50, 5

    направете j = i, 20, 5

       печат *, i, j

       w = w + 1

       keep (w, 1) = i

       запази (w, 2) = j

    край правя

  край правя

  правя i = 1, w

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

  край правя

краен цикъл на програмата

Редът за печат в моята примерна програма се изпълнява само ако j do-loop работи. J цикълът изобщо не се изпълнява, когато надвиша 20. Този пример също въвежда масиви с използването на масив, наречен „keep“. Fortran започва масив с номерация на „1“ вместо нула, което е по същия начин, по който американците номерират етажите на сградите (етаж № 2 се отнася до приземния етаж, за който се приема, че е „1“). Други места в света използват нулево базирано номериране за своите сгради („първият етаж“ е това, което американците наричат ​​„вторият етаж“), както C и C ++ правят за масиви. Резултатът от този пример за „програмен цикъл“ е показан по-долу:

           10 10

          10 15

          10 20

          15 15

          15 20

          20 20

 пази: 10 10

 пази: 10 15

 пази: 10 20

 пази: 15 15

 пази: 15 20

 пази: 20 20

 В последния си пример ще дефинирам подпрограма (функция), наречена „ave“, за да взема средната стойност от три числа, които статично определям. Ще забележите, че ме мързи и просто написах „край“ след програмата и функцията. Това е добре, но ако използвате имена, както направих преди, компилаторът ще ви помогне да проверите дали краят съвпада с това, което искате да съвпада.

Програмно обаждане

  имплицитно няма

  реални a, b, c

  реално av, avsq1, avsq2

  истински аве

  данни a, b, c / 5.0,2.0,3.0 /

  av = ave (a, b, c)

  print *, 'Средната стойност на', a, b, c, 'е:', AV

край

реална функция ave (x, y, z)

  реални x, y, z, сума

  сума = x + y + z

  ave = сума / 3.0

  връщане

край

 Това отпечатва:

 Средната стойност на 5.00000000 2.00000000 3.00000000 е: 3.33333325 

 Да, Fortran може да форматира изхода. Ако заменим “print” по-горе, както следва:

  print 8, 'Средната стойност на', a, b, c, 'е', AV

8 формат (a, 2 (f4.2, ','), f4.2, a, f7.5)

Резултатът ще стане:

Средната стойност от 5.00, 2.00, 3.00 е 3.33333

Форматирането на Fortran също може да се извърши на един ред и да има същите красиви резултати:

print "(a, 2 (f4.2, ','), f4.2, a, f7.5)", 'Средната стойност на', a, b, c, 'е', AV

If you’ve been led to believe that Fortran is weird, you were misled. I wrote all these examples in what Fortran programmers call ‘free form.’ That officially became part of Fortran with the ‘Fortran 90’ standard (hence my instructions to use .f90 or .f95 as file extensions; these tell the compiler, without special option switches, that we are using free form).  Keep in mind, in 1956 users wanted something geared for card punches.  I could go on for hours about how Fortran accommodates that with column-oriented formats and continuation characters, etc.  But, as I’ve shown, you really don’t need to learn that to write or read Fortran code.

И така, защо Fortran се избягва от компютърните учени? Страхотен въпрос. Fortran е най-старият език (около 1956 г.). Започва в ерата на ленти, перфокарти и заместващи човешки компютри. Предшества блоковото структурирано програмиране, теорията на синтактичния анализ и графиката. По пътя си компютърните учени изследваха напредъка в изчисленията, като въвеждаха хиляди езици за програмиране, повечето от които не успяха да се възползват. Независимо от това, във всяка област на човешкото начинание е модерно „навън със старото, с новото“. Компютърните науки не са по-различни. 

Но когато разбиването на числата е важно, нищо не е по-добро или по-лесно от Fortran. Предлагам всички да знаем много инструменти и да използваме най-добрия инструмент за работата. Това, че моят надежден чук е бил в кутията ми с инструменти от дълго време, не означава, че не ми трябва за правилната работа. Fortran не е по-различен.

Fortran е не само оригиналният език за програмиране на високо ниво, той е жив, важен и широко използван. Кой пусна слуховете, за да внуши друго?

 Ресурси

  • Intel Fortran - силно използван за x86 (Intel / AMD), висока производителност
    • Може да се класирате за безплатен компилатор (и други инструменти)
    • Предлагат се пробни копия с опция за закупуване по-късно
    •  Бета версията за 2018 г. работи до юли 2018 г .: опитайте тази последна и най-добрата напълно функционална бета версия, включително Fortran и сродни инструменти, дотогава безплатно: Intel Parallel Studio XE 2018 Beta - Присъединете се сега
  • GNU Fortran - по-широка поддръжка (много процесори, много системи), по-ниска производителност
    • с отворен код и безплатно
    • на моя MacBook Air ... трябваше само да кажа „brew install gcc“ и получавам gfortran безплатно

Щракнете тук, за да изтеглите безплатната си 30-дневна пробна версия на Intel Parallel Studio XE